繁体   English   中英

如何在python中比较子列表

[英]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电话都在询问以下条件是否成立:

  • [1,0,1]中的[1,0,0]
  • [1,0,0]中的[1,0,0]

两者都是错误的。 您想要的是any(a == s for s in b)或(最好a in b

使用any(a in s for s in b)您可以检查列表a是否为b 任何子列表的元素 如果如果xy的子字符串(或者甚至是y本身)(如果两者都是字符串),则x in y返回值将为True ,但对于列表来说,这是不正确的:这里, x必须是y的元素,而不是子列表。

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

因此,如果要检查a是否在b ,则必须使用a in b ,或者如果要使用anyany(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逻辑中的每个sb每个子列表。

当您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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM