当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中对列表的所有值应用'或'?

如何解决《如何在Python中对列表的所有值应用'或'?》经验,为你挑选了2个好方法。

如何在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有优势reduceshortcutting为以后项目的测试序列中,一旦它找到一个真正的价值.如果序列是一个后面有昂贵操作的发生器,这可能非常方便.例如:

>>> 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尽管在最近的蟒蛇中,总会建议" ".



1> Will Harris..:

内置函数any可以满足您的需求:

>>> any([True, True, False])
True
>>> any([False, False, False])
False
>>> any([False, False, True])
True

any有优势reduceshortcutting为以后项目的测试序列中,一旦它找到一个真正的价值.如果序列是一个后面有昂贵操作的发生器,这可能非常方便.例如:

>>> 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



2> Ali Afshar..:

没有人提到它,但" or"在操作员模块中可用作功能:

from operator import or_

然后你可以reduce像上面一样使用.

any尽管在最近的蟒蛇中,总会建议" ".

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有