检查列表是否包含相同的元素

时间:2013-04-25 11:54:54

标签: python list

我有一个清单

List1 = [(12,34),(12,6),(2,4),(1,3),(34,32),(34,6)]

和另一个清单

List2 = [(12,34),(12,6),(2,4),(1,3),(34,32),(56,12),(78,23),(23,56)]

我想创建一个新列表,检查第一个元素与第二个元素。基本上编辑第二个列表。这个清单将成为

List3 = [(56,12),(78,23),(23,56)]

1 个答案:

答案 0 :(得分:4)

如果订单/重复无关紧要:

>>> A = [(12,34),(12,6),(2,4),(1,3),(34,32),(34,6)]
>>> B = [(12,34),(12,6),(2,4),(1,3),(34,32),(56,12),(78,23),(23,56)]
>>> set(B).difference(A)
set([(78, 23), (56, 12), (23, 56)])

否则,如果订单确实重要,只需使用列表理解检查集合的成员资格(O(1)摊销的成员资格检查):

>>> set_A = set(A)
>>> [x for x in B if x not in set_A]
[(56, 12), (78, 23), (23, 56)]

请记住,这个简单的解决方案也有效:

>>> [x for x in B if x not in A]
[(56, 12), (78, 23), (23, 56)]

每次检查A时,只需要扫描整个列表x not in A