我有一个列表,其中包含其他列表,其中包含多个图块位置的坐标,我需要检查该列表是否包含另一个坐标列表,如下例所示:
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
你能帮我找一下怎么做吗?
答案 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:
运营商
in
和not in
测试会员资格。x in s
评估为 如果x
是s
的成员,则为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的元素。