2016-11-24 3 views
0

Итак, я пытаюсь сделать одну строку, чтобы проверить, соответствует ли один элемент в списке Python критериям, но мой текущий код будет продолжать цикл, даже если он попадает в «True» -Марк и, таким образом, только последний элемент имеет значение для проверки:Как проверить весь список в Python для выполнения условия

if [[CheckStatus(value, outsidevalue)] for value in valuelist] is True: 
    magic 

(CheckStatus возвращает значение ИСТИНА или ЛОЖЬ для каждого значения по сравнению с outsidevalue и должен принять это так же верно, если одно значение возвращается True)

+0

См. встроенные функции 'all' и' any'. –

ответ

1

, который всегда будет ложным:

if [[CheckStatus(value, outsidevalue)] for value in valuelist] is True: 

, потому что вы сравниваете list с boolean.

Что вы хотите any:

if any(CheckStatus(value, outsidevalue) for value in valuelist): 

any перебирает на понимании генератора, вызывая ваши функции по всем элементам, пока True не найдено (обратите внимание, что внутри квадратные скобки, были удалены, и мы не делаем необходимо создать понимание списка, просто понимание генератора, которое выполняется быстрее)

+0

Это делает трюк, спасибо – Grak

Смежные вопросы