2017-06-20 106 views
0

要合併兩個列表,並丟棄交叉元素將兩個列表合併到一個列表中並丟棄重複項。熊貓的Python

A = ['a', 'b', 'c', 'd'] 

B = ['a', 'b', 'd', 'e', 'f'] 

預期結果:

['c', 'e', 'f'] 

我可以得到這個:

[i for i in A if i not in B] + [i for i in B if i not in A] 

但是,有沒有更方便方式得到相同的結果沒有循環,最好通過熊貓。

問候

+0

請問元素的順序很重要?如果不是,'list(set(A)^ set(B))'是無與倫比的。使用熊貓來完成這項任務非常昂貴。 – DyZ

+0

@DYZ,真棒,謝謝你!正是我在找的:) –

回答

1

使用裝置:

set(A).symmetric_difference(B) 

或等價的:

set(A)^set(B) 

(可以轉換回list如果需求是...)

+0

朱利安,非常讚賞你提供的兩種方法!它對於我即將完成的任務來說非常方便。請問我該如何計算和比較這兩種方法之間的計算時間,還有@DYZ的建議,以及我笨拙的列表理解方法。我嘗試過'timeit'模塊,但是得到:AttributeError:模塊'timeit'沒有屬性'list'或函數'object has no attribute'list'。再次感謝這個整齊的表達式:D –

+0

我相信這兩個完全一樣,'^'只是同一個函數的快捷方式符號。 – Julien