В питонеКак сравнить подсписок в питоне
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
Я сопрягать список a
с подсписком списка b
. но почему печать any(a in s for s in b)
вернет False?
В питонеКак сравнить подсписок в питоне
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
Я сопрягать список a
с подсписком списка b
. но почему печать any(a in s for s in b)
вернет False?
Потому что с 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, 0, 0] in [[1, 0, 1], [1, 0, 0]]
вернет true, так как первый список является одним из подписок во втором. Ваш any
вызов с просьбой, если одно из следующих условий:
Оба являются ложными. Вы хотите либо any(a == s for s in b)
, либо (желательно) a in b
.
С 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)
Чтобы соответствовать, если список a
является Подсписок из списка b
запустите
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
for x in b:
if a == x:
print("YES")
следующий код будет работать через список б и если вложенный список в б спичек перечислит, было бы print("YES")