Как Вы подаете заявку 'или' ко всем значениям списка в Python?

14
задан sashkello 13 September 2013 в 05:56
поделиться

5 ответов

Встроенная функция any делает то, что Вы хотите:

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

any имеет преимущество перед reduce из сокращенных тест для более поздних объектов в последовательности, после того как это находит истинное значение. Это может быть очень удобно, если последовательность является генератором с дорогой операцией позади него. Например:

>>> 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() builtins затем, они легко реализованы как , 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
31
ответ дан 1 December 2019 в 06:39
поделиться

Никто не упомянул, что это, но" or" доступно как функция в модуле оператора:

from operator import or_

Затем можно использовать reduce как выше.

всегда советовал бы" any" хотя в более свежих Python.

7
ответ дан 1 December 2019 в 06:39
поделиться
>>> all([True,False,True])
False
>>> any([True,False,True])
True

Python 2.5 и ( документация )

3
ответ дан 1 December 2019 в 06:39
поделиться

Можно сделать это:

reduce(lambda a,b: a or b, [True, True, False])
2
ответ дан 1 December 2019 в 06:39
поделиться

уменьшите должен сделать это для Вас, не так ли?

>>> def _or(x, y):
...     return x or y
... 
>>> reduce(_or, [True, True, False])
True
1
ответ дан 1 December 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: