[英]How to compare sublist in python
在python中
a = [1, 0, 0]
b = [[1, 0, 1], [1, 0, 0]]
我将列表a
与列表b
的子列表进行匹配。 但是为什么打印出any(a in s for s in b)
会返回False?
[1, 0, 0] in [[1, 0, 1], [1, 0, 0]]
1,0,0 [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
是y
的子字符串(或者甚至是y
本身)(如果两者都是字符串),则x in y
返回值将为True
,但对于列表来说,这是不正确的:这里, 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)
因为与any
都在检查列表a
是否在字符串列表中,即b
的子列表:
if [1, 0, 0] in b[0] # etc.. [1,0,0] in [1, 0, 1] ...
any逻辑中的每个s
是b
每个子列表。
当您if a in b
查看if a in b
您实际上会检查a
是否在列表b
而不是其子列表中。
要匹配列表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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.