Python求兩個list的差集、交集與並集的方法

pythontab發表於2017-12-20

定義

差集: A,B是兩個集合,所有屬於A且不屬於B的元素構成的集合, 就是差集。

交集: A,B是兩個集合,既屬於A又屬於B的元素構成的集合, 就是交集。

並集: A,B是兩個集合,把他們所有的元素合併在一起組成的集合,就是並集。

求兩個list差集

如有下面兩個列表:

listA = [1,2,3,4]
listB = [2,3,4]

想要的結果是[1]

有3種方法:

1. 迴圈遍歷法

ret = []
for i in listA:
    if i not in listB:
        ret.append(i)
print(ret)

2. 運算子法

ret = list(set(listA) ^ set(listB))
print(ret)

3. difference函式法

list(set(listA).difference(set(listB)))
print(ret)

很明顯第二種、第三種方法更加優雅。

求兩個list的並集

程式碼如下:

ret = list(set(listA).union(set(listB)))
print(ret)

求兩個list的交集

ret = list(set(listA).intersection(set(listB)))
print(ret)


總結:

這三個集合的求法都可以是,將list轉成set以後,使用set的各種方法去處理。


注:以上程式碼在Python3下測試透過

相關文章