欧美国产高清污视频在线观看-欧美久久综合九色综合-国产黄色自拍网站在线-国产三级精品三级在专区精-97中文字幕一区二区-大吊操白虎学生妹逼-精品久久久久亚洲综合网-青青草原国产av一区欧美-国产在线一区二区三区在线

python求列表交集的方法匯總

在Python中 , 列表是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu) , 它可以存儲(chǔ)任意類(lèi)型的元素 。當(dāng)我們需要對(duì)多個(gè)列表進(jìn)行操作時(shí) , 經(jīng)常會(huì)涉及到求它們的交集 。本文將從多個(gè)角度介紹Python中求列表交集的方法 , 希望能為讀者提供一些參考 。
方法一:使用set()函數(shù)

python求列表交集的方法匯總


set()函數(shù)是Python中內(nèi)置的一個(gè)函數(shù) , 它可以將一個(gè)可迭代對(duì)象轉(zhuǎn)換為一個(gè)無(wú)序、不重復(fù)的集合 。我們可以將多個(gè)列表轉(zhuǎn)換為集合 , 然后使用交集運(yùn)算符“&”求它們的交集 。以下是示例代碼:
```python
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [4, 5, 6, 7]
set1 = set(list1)
set2 = set(list2)
set3 = set(list3)
result = set1 & set2 & set3
print(result)# 輸出{4}
```
使用set()函數(shù)求列表交集的優(yōu)點(diǎn)是代碼簡(jiǎn)潔明了 , 速度較快 。但是它也有一些缺點(diǎn) , 比如不能保留原列表的順序 , 會(huì)將重復(fù)元素去重 , 等等 。
方法二:使用列表推導(dǎo)式
列表推導(dǎo)式是Python中一種簡(jiǎn)潔的語(yǔ)法 , 它可以根據(jù)一個(gè)已有的列表生成一個(gè)新的列表 。我們可以使用列表推導(dǎo)式來(lái)求多個(gè)列表的交集 。以下是示例代碼:
```python
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [4, 5, 6, 7]
result = [x for x in list1 if x in list2 and x in list3]
print(result)# 輸出[4]
```
使用列表推導(dǎo)式求列表交集的優(yōu)點(diǎn)是可讀性較好 , 可以保留原列表的順序 , 但是它的缺點(diǎn)是速度較慢 , 當(dāng)列表較大時(shí)會(huì)占用較多的內(nèi)存 。
方法三:使用reduce()函數(shù)
【python求列表交集的方法匯總】reduce()函數(shù)是Python中functools模塊中的一個(gè)函數(shù) , 它可以將一個(gè)可迭代對(duì)象中的元素不斷進(jìn)行某種操作 , 最終得到一個(gè)單一的結(jié)果 。我們可以使用reduce()函數(shù)來(lái)求多個(gè)列表的交集 。以下是示例代碼:
```python
from functools import reduce
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [4, 5, 6, 7]
result = reduce(lambda x, y: x & y, [set(list1), set(list2), set(list3)])
print(result)# 輸出{4}
```
使用reduce()函數(shù)求列表交集的優(yōu)點(diǎn)是代碼簡(jiǎn)潔 , 可以處理任意數(shù)量的列表 , 但是它的缺點(diǎn)是可讀性較差 , 可能需要一些時(shí)間來(lái)理解代碼的含義 。
方法四:使用numpy庫(kù)
numpy是Python中一個(gè)重要的數(shù)值計(jì)算庫(kù) , 它提供了各種數(shù)據(jù)結(jié)構(gòu)和函數(shù)來(lái)處理數(shù)組和矩陣 。我們可以使用numpy庫(kù)來(lái)求多個(gè)列表的交集 。以下是示例代碼:
```python
import numpy as np
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [4, 5, 6, 7]
result = np.intersect1d(list1, list2, list3)
print(result)# 輸出[4]
```
使用numpy庫(kù)求列表交集的優(yōu)點(diǎn)是速度較快 , 可以處理任意數(shù)量的列表和多維數(shù)組 , 但是它的缺點(diǎn)是需要額外安裝庫(kù) , 也可能需要一些時(shí)間來(lái)學(xué)習(xí)使用 。
方法五:使用pandas庫(kù)
pandas是Python中一個(gè)重要的數(shù)據(jù)分析庫(kù) , 它提供了各種數(shù)據(jù)結(jié)構(gòu)和函數(shù)來(lái)處理表格和時(shí)間序列數(shù)據(jù) 。我們可以使用pandas庫(kù)來(lái)求多個(gè)列表的交集 。以下是示例代碼:
```python
import pandas as pd
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [4, 5, 6, 7]
df = pd.DataFrame({'list1': list1, 'list2': list2, 'list3': list3})
result = df.loc[:, 'list1':'list3'].apply(lambda x: set(x)).agg(lambda x: set.intersection(*x))

猜你喜歡