我有一张布尔人的名单:
[True, True, False, False, False, True]
我正在寻找一种方法来计算列表中True
的数量(因此在上面的示例中,我希望返回值为3
)我已经找到了查找特定元素出现次数的示例,但是有没有更有效的方法,因为我正在使用布尔值?我在想一些类似于all
或any
的东西。
如果您只关心常量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
列表
有一个计数
方法:
>>> [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)
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进行操作很容易。有人可以向我解释发生了什么吗? 这是一个简单的测试程序: 问题答案: 只需根据它们的真实值返回第一个或