Как выполнить оператор "if-for" в python?

С python я хотел бы запустить тест по всему списку, и если все утверждения верны для каждого элемента в списке, выполните определенное действие.

Псевдокод: если для каждого x в "списке" выполняется "проверка с участием x", тогда выполните "this".

Кажется, должен быть простой способ сделать это.

Какой синтаксис я должен использовать в python?

Ответы

Ответ 1

Используйте all(). Он принимает итерабельность в качестве аргумента и возвращает True, если все записи оцениваются до True. Пример:

if all((3, True, "abc")):
    print "Yes!"

Вам, вероятно, понадобится какое-то генераторное выражение, например

if all(x > 3 for x in lst):
    do_stuff()

Ответ 2

>>> x = [True, False, True, False]
>>> all(x)
False

all() возвращает True, если все элементы в списке True

Аналогично, any() вернет True, если какой-либо элемент имеет значение true.

Ответ 3

Пример (проверка всех элементов больше 0)

if all(x > 0 for x in list_of_xs):
    do_something()

Ранее изначально использовалось понимание списка (if all([x > 0 for x in list_of_xs]):), которое, как указано delnan (Спасибо), выражало генератор быстрее, поскольку выражение генератора заканчивается в первом False, тогда как это выражение применяет сравнение ко всем элементам списка.

Однако будьте осторожны с выражением генератора, например:

all(x > 0 for x in list_of_xs)

Если вы используете pylab (запуск ipython как "ipython -pylab" ), вся функция заменяется на numpy.all, которая не обрабатывает правильные выражения генератора.

all([x>0 for x in [3,-1,5]]) ## False
numpy.all([x>0 for x in [3,-1,5]]) ## False
all(x>0 for x in [3,-1,5]) ## False
numpy.all(x>0 for x in [3,-1,5]) ## True 

Ответ 4

if reduce(lambda x, y: x and involve(y), yourlist, True):
   certain_action()

involve - это действие, которое вы хотите задействовать для каждого элемента в списке, yourlist - ваш исходный список, certain_action - это действие, которое вы хотите выполнить, если все утверждения верны.

Ответ 5

Я считаю, что вам нужен метод all():

$ python
>>> help(all)
Help on built-in function all in module __builtin__:

all(...)
    all(iterable) -> bool

    Return True if bool(x) is True for all values x in the iterable.

Ответ 6

all() один не работает, если вам нужна дополнительная фаза map().

см. ниже:

all((x==0 for x in xrange(1000))

и

all([x==0 for x in xrange(1000)])

2-й пример выполнит 1000, сравните, даже второй сравните, сделайте весь результат ложным.