python 兩個list 求交集,並集,差集

2021-07-27 15:54:12 字數 1085 閱讀 7399

在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...