2016-04-09 5 views

ответ

0

Потому что с any вы проверяете, если список a находится в списке строк т.е. подсписков из b:

if [1, 0, 0] in b[0] # etc.. [1,0,0] in [1, 0, 1] ... 

Каждый s в логике любой есть каждый подсписок в b.

, когда вы if a in b, вы действительно проверяете, есть ли a в списке b нет в его подсписках.

1

[1, 0, 0] in [[1, 0, 1], [1, 0, 0]] вернет true, так как первый список является одним из подписок во втором. Ваш any вызов с просьбой, если одно из следующих условий:

  • [1,0,0] в [1,0,1]
  • [1,0,0] в [1,0, 0]

Оба являются ложными. Вы хотите либо any(a == s for s in b), либо (желательно) a in b.

1

С any(a in s for s in b) вы проверить список a является элемент любого из подсписков в b. В то время как x in y вернется True если x подстрока y (или даже самого y), если обе строки, то же не работает со списками: здесь, x должен быть элементом y, не подсписок.

>>> "bcd" in "abcde" 
True 
>>> list("bcd") in list("abcde") 
False 

Таким образом, если вы хотите, чтобы проверить, является ли a в b, вы должны использовать a in b, или, если вы хотите использовать any: any(a == s for s in b)

0

Чтобы соответствовать, если список a является Подсписок из списка b запустите

a = [1, 0, 0] 
b = [[1, 0, 1], [1, 0, 0]] 

for x in b: 
    if a == x: 
     print("YES") 

следующий код будет работать через список б и если вложенный список в б спичек перечислит, было бы print("YES")

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