如何在python中比较子列表

时间:2016-04-09 19:36:25

标签: python list compare sublist

在python中

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

我将列表a与列表b的子列表进行匹配。 但是为什么打印any(a in s for s in b)会返回False?

4 个答案:

答案 0 :(得分: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 :(得分:1)

使用any(a in s for s in b),您检查列表a 是否是 b的任何子列表的元素。如果x in yTrue(或者x本身的子字符串),y将返回y,如果两者都是字符串,则同样不适用于列表:在这里,x必须是y的元素,而不是子列表。

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

因此,如果您想检查a中是否b,您必须使用a in b,或者,如果您想使用anyany(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")