2015-11-23 6 views
0

Я должен проверить кратный«и»условия, если Eg:Проверить несколько условий `if` используя цикл

if (a[1]==b[1]) and (a[2]==b[2]) and (a[3]==b[3]) and (a[4]==b[4]): 

я могу сделать выше, используя для цикла, если, скажем, что-то вроде

if (a[i]==b[i] for i in range(0,4)): 

Выше предложено не будет работать, поскольку оно устанавливает условие как истинное, даже если одно из них истинно.

+0

Что такое 'a' и' b'? – thefourtheye

+0

, так что вы хотите проверить, совпадают ли 2 массива или списки? – Altoyyr

+0

Здесь a и b - словари. для i в диапазоне (0,4) можно заменить на параметр в параметрах – akipro

ответ

7

Просто используйте all() здесь:

if all(a[i]==b[i] for i in range(1, 5)): 

Из документа:

Возврат True если все элементы Iterable истинны (или если итерабельность пуста).

И (a[i]==b[i] for i in range(1, 5)) Вернуть generator (это итератор), то all() возвращение True если все элементы в этом генераторе True, еще False. Как и ваш код.

+0

спасибо, что он работал – akipro

+1

@ user3798653, если ответ решил вашу проблему, подумайте о ее принятии –

2

Вы можете сделать

if all(a[i]==b[i] for i in range(1,5)): 
    # logic here 

Использование all():

  1. , если все элементы в Iterable являются True возвращает True
  2. если один lement является False это вернуть False

например: all([True,True]) ->True all([False,True]) ->False

+0

@MartijnPieters Ahh, Извините Забыл –

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