在python中
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
我将列表a
与列表b
的子列表进行匹配。
但是为什么打印any(a in s for s in b)
会返回False?
答案 0 :(得分:1)
[1, 0, 0] in [[1, 0, 1], [1, 0, 0]]
将返回true,因为第一个列表是第二个列表中的一个子列表。您的any
来电询问是否满足以下任一条件:
两者都是假的。你想要的是any(a == s for s in b)
或(最好)a in b
。
答案 1 :(得分: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)
答案 2 :(得分: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
是否在其中时,
答案 3 :(得分:0)
要匹配列表a
是列表b
的子列表,请运行
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
for x in b:
if a == x:
print("YES")
以下代码将在列表b中运行,如果b中的嵌套列表与列表a匹配,则print("YES")