list對(duì)象取交集 python怎么求兩個(gè)列表的交集?
python怎么求兩個(gè)列表的交集?方法1遍歷B1。如果元素也存在于B2中,則返回如下復(fù)制代碼:B1=[1,2,3]B2=[2,3,4]B3=[Val for Val in B1 If Val in B
python怎么求兩個(gè)列表的交集?
方法1遍歷B1。如果元素也存在于B2中,則返回如下復(fù)制代碼:B1=[1,2,3]B2=[2,3,4]B3=[Val for Val in B1 If Val in B2]print B3。運(yùn)行結(jié)果如下:[2,3]方法2將列表轉(zhuǎn)換為集合,使用集合運(yùn)算符計(jì)算交集,然后將其轉(zhuǎn)換回列表類型。復(fù)制代碼如下:B1=[1,2,3]B2=[2,3,4]B3=list(set(B1)&set(B2))print B3。運(yùn)行結(jié)果如下:復(fù)制代碼如下:[2,3,4],3]在前面的方法3示例中,這兩個(gè)列表是簡單的單元素列表。另一種特殊情況是嵌套類型的復(fù)制代碼如下:B1=[1,2,3]B2=[[2,4],[3,5
B3=[filter(lambda x:x in B1,sublist)for sublist in B2]print B3。復(fù)制代碼如下:[2,3]
如何求多個(gè)集合的交集?
標(biāo)題等價(jià)于:假設(shè)有N個(gè)集合A1,A2,A3,…,an,如何找到A1∩A2∩A3∩。。?!砂?。
有三種解決方案:
1。根據(jù)正常優(yōu)先級(jí)從左到右:
首先計(jì)算A1∩A2的值,假設(shè)該值等于S1,然后計(jì)算S1∩A3的值,依此類推,直到得到sn-1∩an的值,這是所有集合交集的結(jié)果。
2. 利用交換律和結(jié)合律來改變優(yōu)先權(quán)來計(jì)算:
在這N個(gè)集合中,首先比較容易找到兩個(gè)集合的交集,所以我們可以先找出它們的交集,假設(shè)s,然后看哪一對(duì)s和集合的其余部分比較容易找到交集等等,直到所有集合都匹配為止最終值是所有集合交集的結(jié)果。
3. 遞歸解決方案:事實(shí)上,它是上述兩種方法的變體。N個(gè)集合的交集可視為函數(shù)f,其參數(shù)為N個(gè)集合,簡稱f(N):則N-1個(gè)集合的交集可以按同一個(gè)函數(shù)求解,但參數(shù)不同——N-1個(gè)集合,簡稱f(N-1),假設(shè)解為s;然后s和集的其余部分找到交集是函數(shù)f的結(jié)果,函數(shù)f的參數(shù)是N個(gè)集。有了這個(gè)遞歸表達(dá)式,就可以通過計(jì)算機(jī)編程來求解。
python二維數(shù)組怎么求交集?
本文通過一個(gè)例子說明Python如何獲得兩個(gè)數(shù)組的交、并、差。與你分享供你參考。具體內(nèi)容如下:1。獲取兩個(gè)列表的交集#方法1:a=[2,3,4,5]B=[2,5,8]TMP=[Val for Val in a if Val in B]print TMP#[2,5]#方法2:print list(set(a))。交叉點(diǎn)(集合(b)))2。獲取兩個(gè)列表的并集打印列表(set(a))。聯(lián)合(集合(b)))3。獲取兩個(gè)列表的差集打印列表(set(b))。差(集(a))#如果B中有而a中沒有,我們可以通過上述方法處理Python列表的交、并、差。