[英]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.