繁体   English   中英

相互减去两个元组列表

[英]Subtract two lists of tuples from each other

我有这两个列表,我需要从另一个列表中减去一个,但是常规的“-”将不起作用,.intersection或XOR(^)都不起作用。

A = [(0, 1)]
B = [(0, 0), (0,1), (0, 2)]

本质上我想要的是:

B - A = [(0, 0), (0, 2)]

您可以使用列表理解来解决此问题:

[item for item in B if item not in A]

可以在这里找到更多讨论

如果BA中没有重复的元组,则最好将它们保留为集合,并使用difference的集合:

A = [(0, 1)]
B = [(0, 0), (0,1), (0, 2)]
diff = set(B) - set(A) # or set(B).difference(A)
print(diff)
# {(0, 0), (0, 2)}

您可以执行其他操作,例如找到两个集合之间的intersection

>>> set(B) & set(A)
{(0, 1)}

甚至采取他们的symmetric_difference

>>> set(B) ^ set(A)
{(0, 0), (0, 2)}

您可以通过将列表转换为集合来执行此类操作。 设置差异:

r = set(B)-set(A)

如有必要,转换为列表:list(r)

与在列表上运行“ in”操作相比,处理集合效率更高: 使用列表vs集合来实现列表差异

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM