在python中,陣列可以用list來表示。如果有兩個陣列,分別要求交集,並集與差集,怎麼實現比較方便呢?
當然最容易想到的是對兩個陣列做迴圈,即寫兩個for迴圈來實現。這種寫法大部分同學應該都會,而且也沒有太多的技術含量,本博主就不解釋了。這裡給大家使用更為裝bility的一些方法。
老規矩,talk is cheap,show me the code
#!/usr/bin/env python
#coding:utf-8
def diff(lista,listb):
#求交集的兩種方式
reta = [i for i in lista if i in listb]
retb = list(set(lista).intersection(set(listb)))
print "reta is: ",reta
print "retb is: ",retb
#求並集
retc = list(set(lista).union(set(listb)))
print "retc1 is: ",retc
#求差集,在b中但不在a中
retd = list(set(listb).difference(set(lista)))
print "retd is: ",retd
rete = [i for i in listb if i not in lista]
print "rete is: ",rete
def main():
lista = [1,2,3,4,5]
listb = [3,4,5,6,7]
diff(lista,listb)
if __name__ == '__main__':
main()
讓code run起來
reta is: [3, 4, 5]
retb is: [3, 4, 5]
retc1 is: [1, 2, 3, 4, 5, 6, 7]
retd is: [6, 7]
rete is: [6, 7]
求兩個List的交集和並集
最近遇到的面試題,假設有兩個list分別為list1和list2 交集 list1.retainall list2 list1的資料就變成list1和list2的交集,list2不變。public class listtest system.out.println for int i 0 i lis...
兩個有序集合求交集
方案一 暴力法,for for,時間複雜度o n n 當資料量很大時,不可取 方案二 拉鍊法 有序集合1 有序集合2 兩個指標指向首元素,比較元素的大小 1 如果相同,放入結果集,隨意移動乙個指標 2 否則,移動值較小的乙個指標,直到隊尾 這種方法的好處是 1 集合中的元素最多被比較一次,時間複雜度...
python 兩個list 交集 並集 差集
def aaaaa a1 2 3,4 5 b1 2 5,8 a set a1 b set b1 ai a.intersection b print 交集 兩個list都有的元素.ai au a.union b print 並集 合併list,並且去除重複元素.au ad a.difference b...