要合併兩個列表,並丟棄交叉元素將兩個列表合併到一個列表中並丟棄重複項。熊貓的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]
但是,有沒有更方便方式得到相同的結果沒有循環,最好通過熊貓。
問候
要合併兩個列表,並丟棄交叉元素將兩個列表合併到一個列表中並丟棄重複項。熊貓的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]
但是,有沒有更方便方式得到相同的結果沒有循環,最好通過熊貓。
問候
使用裝置:
set(A).symmetric_difference(B)
或等價的:
set(A)^set(B)
(可以轉換回list
如果需求是...)
朱利安,非常讚賞你提供的兩種方法!它對於我即將完成的任務來說非常方便。請問我該如何計算和比較這兩種方法之間的計算時間,還有@DYZ的建議,以及我笨拙的列表理解方法。我嘗試過'timeit'模塊,但是得到:AttributeError:模塊'timeit'沒有屬性'list'或函數'object has no attribute'list'。再次感謝這個整齊的表達式:D –
我相信這兩個完全一樣,'^'只是同一個函數的快捷方式符號。 – Julien
請問元素的順序很重要?如果不是,'list(set(A)^ set(B))'是無與倫比的。使用熊貓來完成這項任務非常昂貴。 – DyZ
@DYZ,真棒,謝謝你!正是我在找的:) –