如何在Python中对列表的所有值应用'或'?我想的是:
or([True, True, False])
或者如果可能的话:
reduce(or, [True, True, False])
Will Harris.. 31
内置函数any
可以满足您的需求:
>>> any([True, True, False]) True >>> any([False, False, False]) False >>> any([False, False, True]) True
any
有优势reduce
shortcutting为以后项目的测试序列中,一旦它找到一个真正的价值.如果序列是一个后面有昂贵操作的发生器,这可能非常方便.例如:
>>> def iam(result): ... # Pretend this is expensive. ... print "iam(%r)" % result ... return result ... >>> any((iam(x) for x in [False, True, False])) iam(False) iam(True) True >>> reduce(lambda x,y: x or y, (iam(x) for x in [False, True, False])) iam(False) iam(True) iam(False) True
如果您的Python版本没有内置版本any()
,all()
那么它们很容易实现,Guido van Rossum建议:
def any(S): for x in S: if x: return True return False def all(S): for x in S: if not x: return False return True
Ali Afshar.. 7
没有人提到它,但" or
"在操作员模块中可用作功能:
from operator import or_
然后你可以reduce
像上面一样使用.
any
尽管在最近的蟒蛇中,总会建议" ".
内置函数any
可以满足您的需求:
>>> any([True, True, False]) True >>> any([False, False, False]) False >>> any([False, False, True]) True
any
有优势reduce
shortcutting为以后项目的测试序列中,一旦它找到一个真正的价值.如果序列是一个后面有昂贵操作的发生器,这可能非常方便.例如:
>>> def iam(result): ... # Pretend this is expensive. ... print "iam(%r)" % result ... return result ... >>> any((iam(x) for x in [False, True, False])) iam(False) iam(True) True >>> reduce(lambda x,y: x or y, (iam(x) for x in [False, True, False])) iam(False) iam(True) iam(False) True
如果您的Python版本没有内置版本any()
,all()
那么它们很容易实现,Guido van Rossum建议:
def any(S): for x in S: if x: return True return False def all(S): for x in S: if not x: return False return True
没有人提到它,但" or
"在操作员模块中可用作功能:
from operator import or_
然后你可以reduce
像上面一样使用.
any
尽管在最近的蟒蛇中,总会建议" ".