当前位置: 首页 > 知识库问答 >
问题:

计算Python列表中的真布尔数

乐正浩博
2023-03-14

我有一张布尔人的名单:

[True, True, False, False, False, True]

我正在寻找一种方法来计算列表中True的数量(因此在上面的示例中,我希望返回值为3)我已经找到了查找特定元素出现次数的示例,但是有没有更有效的方法,因为我正在使用布尔值?我在想一些类似于allany的东西。

共有3个答案

谷梁星雨
2023-03-14

如果您只关心常量True,一个简单的就可以了。但是,请记住,在Python中,其他值也被评估为True。一个更健壮的解决方案是使用bool内置:

>>> l = [1, 2, True, False]
>>> sum(bool(x) for x in l)
3

更新:这里有另一个类似的强大解决方案,其优势是更加透明:

>>> sum(1 for x in l if x)
3

P. S.Python琐事:True可以是true而不是1。警告:不要在工作中尝试这个!

>>> True = 2
>>> if True: print('true')
... 
true
>>> l = [True, True, False, True]
>>> sum(l)
6
>>> sum(bool(x) for x in l)
3
>>> sum(1 for x in l if x)
3

邪恶得多:

True = False
夹谷星河
2023-03-14

列表有一个计数方法:

>>> [True,True,False].count(True)
2

这实际上比更有效,并且对意图更明确,所以没有理由使用

In [1]: import random

In [2]: x = [random.choice([True, False]) for i in range(100)]

In [3]: %timeit x.count(True)
970 ns ± 41.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [4]: %timeit sum(x)
1.72 µs ± 161 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
寿鸣
2023-03-14

True等于1

>>> sum([True, True, False, False, False, True])
3
 类似资料:
  • 问题内容: 我有一个布尔值列表: 并且我正在寻找一种方法来计算列表中的数量(因此,在上面的示例中,我希望返回值是。)我已经找到了一些示例,这些示例寻找特定元素的出现次数。因为我正在使用布尔运算,所以有效的方法吗?我在想类似或的东西。 问题答案: 等于。

  • 2.4.4 Python 中真假的表示与计算* 如前所述,较新版本的 Python 引入了内建类型 bool,并且定义了布尔值 True 和 False。而在此之前,Python 曾经利用 1 和 0 来作为布尔值。 事实上,如今的 Python 在表达真假方面更加灵活——任何内建类型的值都可以解释成布尔值。例如,数值(int、long、float)可以解释成布尔值:0 为 False,非 0 值

  • 问题内容: 我在Python中有一个布尔列表 我想将其更改为与逻辑相反 的方法吗?在Python中是否有一种内置的方法(类似于call )可以执行此操作,而无需使用手写循环来反转元素? 问题答案: 列表理解很容易: 产量

  • 我试图找出我的DataFrame列中是否存在特定的列,但我有一些问题。 我所做的:使用布尔运算“notin”(我尝试了any()、all()、“in”)来查找特定的列标题,但它似乎工作不正常! 假设我的DataFrame列标题是: 我想看看是否所有的‘M1’、‘M2’、…'M20'和TM1'在那里。如果一个或多个代码丢失,则该代码将不起作用。 所以我说: 现在,假设df具有所有询问列标题,if语句

  • 我正在寻找一个易于计算的字符串,作为包含双精度和布尔值的布尔表达式。 我已经看过javaluator了,但我不确定它是否在一个表达式中支持多种数据类型,比如double和boolean?! 最大的挑战是,变量值不是存储在变量“exposeOk”中,而是存储在包含字符串-值对的对象列表中。因此,如果计算器需要exposeOk的值,它必须在列表中搜索包含字符串“exposeOk”的对象,并且必须使用存

  • 问题内容: 我有两个布尔列表,例如, 我想将这些列表与预期的输出一起: 我以为表达会起作用,但后来发现它不起作用:事实上, 输出: 输出: 使用列表推导 确实 具有正确的输出。ew! 请注意,我找不到任何可以告诉我AND运算符的参考,就像我尝试使用x和y一样。但是尝试用Python进行操作很容易。有人可以向我解释发生了什么吗? 这是一个简单的测试程序: 问题答案: 只需根据它们的真实值返回第一个或