sco*_*awg 3 python expression list
是否有一种优雅,可读的方式来检查迭代中的所有元素是否it
解析True
(您可以假设所有值都是布尔值,尽管这与我的问题无关)?我提出了:
any(it) and not reduce(lambda x, y: x and y, it)
但是我认为减少使得理解有点混乱加上我觉得它不起作用:
In [1]: a=[True, True, False]
In [7]: any(a) and not reduce(lambda x, y: x and y, a)
Out[7]: True
Run Code Online (Sandbox Code Playgroud)
有更可读的方法吗?
更新:我在上面的表达式中意识到错误.reduce()需要在看到True时停止,而不是继续.
你的标题不同意你的问题,但我会回答标题.
你可以使用sum
布尔值.检查它是否等于1(或你想要的任何值):
>>> a = [True, True, False]
>>> sum(a)
2
>>> b = ['hey', '', 'a string']
>>> sum(map(bool,b))
2
Run Code Online (Sandbox Code Playgroud)
你可以使用count
:
>>> a=[True, True, False]
>>> if a.count(True) == 1:
... print 'Hello'
... else:
... print 'Sorry'
Sorry
Run Code Online (Sandbox Code Playgroud)
>>> [True, False].count(True) == 1
True
>>> [True, True, False].count(True) == 1
False
>>> [True, True, False].count(False) == 1
True
Run Code Online (Sandbox Code Playgroud)