我有一个清单
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)]
答案 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
。