Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表是否包含其他列表中的所有项目_Python_Algorithm - Fatal编程技术网

Python 检查列表是否包含其他列表中的所有项目

Python 检查列表是否包含其他列表中的所有项目,python,algorithm,Python,Algorithm,检查元组列表是否包含其他列表所包含的所有元组的最简单/最快方法是什么。例如: t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ] t2 = [ (3,4), (11,12) ] 因为t1包含t2中的所有元组,所以这种情况是正确的。我试过这样的方法: [i for e in t2 for i in t1 if e in i] sorted(t1) == sorted(t2) 但这似乎总是回到了现实。有更好的方法吗?您可以从这些列表中创建se

检查元组列表是否包含其他列表所包含的所有元组的最简单/最快方法是什么。例如:

t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ]
t2 = [ (3,4), (11,12) ]
因为t1包含t2中的所有元组,所以这种情况是正确的。我试过这样的方法:

[i for e in t2 for i in t1 if e in i]
sorted(t1) == sorted(t2)

但这似乎总是回到了现实。有更好的方法吗?

您可以从这些列表中创建
set
s,并使用
issubset
方法:

>>> t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ]
>>> t2 = [ (3,4), (11,12) ]
>>> s1 = set(t1)
>>> s2 = set(t2)
>>> s2.issubset(s1)
True

您可以使用
set
s

t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ]
t2 = [ (3,4), (11,12) ]
set(t2).issubset(t1)
# returns true

# or equivalent use '<=' so
set(t2) <= set(t1)
# returns true
t1=[(1,2)、(3,4)、(5,6)、(7,8)、(9,10)、(11,12)]
t2=[(3,4)、(11,12)]
设置(t2)。发布设置(t1)
#返回true

#或者使用“为简单起见,您可以这样做:

print all(x in t1 for x in t2)
s1 = set(t1)
print all(x in s1 for x in t2)
但是,它将在
t1
中搜索
t2
中的每个元素。当
t1
像本例中那样小时,这可能无关紧要,但为了允许更大的集合,我会这样做:

print all(x in t1 for x in t2)
s1 = set(t1)
print all(x in s1 for x in t2)
或者这个:

print set(t1).issuperset(t2)
这通常会更快,因为
中的
对于集合要比对于大型列表快得多。无论大小,将
t2
转换为一个集合都不会带来主要的性能好处,所以我不会这么做


与往常一样,最好从“正确”的集合中获取数据。因此,如果
t1
的主要目的是在其中查找内容,那么首先使用
set
而不是列表。

研究并使用小写的sets-
set
s。