我有这两个列表,我需要从另一个中减去一个,但常规" - "不会工作,也不会.Intersection或XOR(^)。
A = [(0, 1)]
B = [(0, 0), (0,1), (0, 2)]
基本上我想要的是:
B - A = [(0, 0), (0, 2)]
答案 0 :(得分:2)
答案 1 :(得分: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)}
答案 2 :(得分:0)
您可以通过将列表转换为集合来执行此类操作。设定差异:
r = set(B)-set(A)
如有必要,转换为列表:list(r)
与在列表上运行“in”操作相比,使用集合是有效的:using lists vs sets for list differences