Python - 检查列表列表是否包含特定列表

时间:2014-03-18 15:24:38

标签: python list

我有一个列表,其中包含其他列表,其中包含多个图块位置的坐标,我需要检查该列表是否包含另一个坐标列表,如下例所示:

totalList = [ [[0,1], [2,7], [6,3]], [[2,3], [6,1], [4,1]] ]

redList = [ [0,1], [2,7], [6,3] ]

if totalList contains redList:
   #do stuff

你能帮我找一下怎么做吗?

3 个答案:

答案 0 :(得分:10)

只需使用遏制测试:

if redList in totalList:

这会为您的示例数据返回True

>>> totalList = [ [[0,1], [2,7], [6,3]], [[2,3], [6,1], [4,1]] ]
>>> redList = [ [0,1], [2,7], [6,3] ]
>>> redList in totalList
True

答案 1 :(得分:2)

只需使用in运算符:

>>> totalList = [ [[0,1], [2,7], [6,3]], [[2,3], [6,1], [4,1]] ]
>>> redList = [ [0,1], [2,7], [6,3] ]
>>> redList in totalList
True
>>> if redList in totalList:
...     print('list found')
...
list found
>>>

来自docs

  

运营商innot in测试会员资格。 x in s评估为   如果xs的成员,则为true,否则为false。 x not in s返回   否定x in s

答案 2 :(得分:2)

使用in关键字来确定list(或任何其他Python容器)是否包含元素:

totalList = [ [[0,1], [2,7], [6,3]], [[2,3], [6,1], [4,1]] ]
redList = [ [0,1], [2,7], [6,3] ]
redList in totalList

返回

True

所以,如果你这样做:

if redList in totalList:
    #do stuff

然后您的代码将do stuff


  

我需要知道totalList是否包含与redList具有完全相同元素的列表。

我们看到该列表实现了__contains__

>>> help(list.__contains__)
Help on wrapper_descriptor:

__contains__(...)
    x.__contains__(y) <==> y in x

来自文档:

  

__contains__   Called to implement membership test operators. Should return true if item is in self, false otherwise.

  如果x是集合s的成员,则

The operators in and not in test for collection membership. x in s的计算结果为true,否则为false。 x不在s中返回s中x的否定。集合成员资格测试传统上一直与序列绑定;如果集合是序列并且包含与该对象相等的元素,则对象是集合的成员。但是,许多其他对象类型支持成员资格测试而不是序列是有意义的。特别是,词典(用于键)和集合支持成员资格测试。

     

对于列表和元组类型,当且仅当存在时,x中的x才为真   存在索引i,使得x == y [i]为真。

所以我们知道其中一个元素必须等于redList的元素。