簡體   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