[英]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)]
如果B
和A
中没有重复的元组,则最好将它们保留为集合,并使用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.