如何申请“或”? Python 中列表的所有值?

发布于 2024-07-11 05:33:58 字数 170 浏览 10 评论 0原文

如何将“或”应用于 Python 中列表的所有值? 我在想类似的事情:

or([True, True, False])

或者如果可能的话:

reduce(or, [True, True, False])

How do you apply 'or' to all values of a list in Python? I'm thinking something like:

or([True, True, False])

or if it was possible:

reduce(or, [True, True, False])

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

野生奥特曼 2024-07-18 05:33:58

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

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

anyreduce 具有优势,可以在序列中的后续项目中快捷地进行测试。找到一个真正的值。 如果序列是一个背后有昂贵操作的生成器,这会非常方便。 例如:

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

The built-in function any does what you want:

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

any has the advantage over reduce of shortcutting the test for later items in the sequence once it finds a true value. This can be very handy if the sequence is a generator with an expensive operation behind it. For example:

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

If your Python's version doesn't have any(), all() builtins then they are easily implemented as Guido van Rossum suggested:

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
眼眸 2024-07-18 05:33:58

没有人提到它,但是“or”可以作为运算符模块中的函数使用:

from operator import or_

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

尽管在最近的Python中,总是建议使用“any”。

No one has mentioned it, but "or" is available as a function in the operator module:

from operator import or_

Then you can use reduce as above.

Would always advise "any" though in more recent Pythons.

雪花飘飘的天空 2024-07-18 05:33:58
>>> all([True,False,True])
False
>>> any([True,False,True])
True

Python 2.5 及更高版本(文档

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

Python 2.5 and up (documentation)

煞人兵器 2024-07-18 05:33:58

你可以这样做:

reduce(lambda a,b: a or b, [True, True, False])

You can do this:

reduce(lambda a,b: a or b, [True, True, False])
黑寡妇 2024-07-18 05:33:58

减少应该为你做,不是吗?

>>> def _or(x, y):
...     return x or y
... 
>>> reduce(_or, [True, True, False])
True

reduce should do it for you, shouldn't it?

>>> def _or(x, y):
...     return x or y
... 
>>> reduce(_or, [True, True, False])
True
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文