下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Python中itertools庫的四個(gè)函數(shù)介紹目錄1.引言2.accumulate()函數(shù)3.compress()函數(shù)4.groupby()函數(shù)5.排列組合操作6總結(jié)
1.引言
在Python開發(fā)中,??itertools??庫經(jīng)常被忽視,實(shí)際上該庫中抱恨了一些非常棒的函數(shù),特別是用于處于數(shù)據(jù)流的函數(shù)。在本文中,我們將討論該庫中的十分使用的幾個(gè)函數(shù),并重點(diǎn)介紹什么時(shí)候我們應(yīng)該考慮使用它們。
閑話少說,我們直接開始吧!
2.accumulate()函數(shù)
第三方庫??itertools??提供的函數(shù)??accumulate()??,可以幫助我們對數(shù)據(jù)流執(zhí)行累積操作。換句話說,假設(shè)我們有一個(gè)數(shù)據(jù)列表[a,b,c,d,e]和一個(gè)運(yùn)算f,那么函數(shù)??accumulate()??可以幫助我們計(jì)算??f(a,b)??,??f(f(a,b),c)??,??f(f(f(a,b),c),d)??,等等。
文字有點(diǎn)不直觀,那我們來舉個(gè)累加的栗子吧!
樣例代碼如下:
importitertools
data=[3,4,6,2,1,9,0,7,5,8]
res=itertools.accumulate(data,lambdax,y:x+y)
print(list(res))
#[3,7,13,15,16,25,25,32,37,45]
上述函數(shù)??accumulate()??的作用是:先把3和4相加,然后得到7,再和6相加,得到另一個(gè)值,依此類推。
需要注意的是:如果要執(zhí)行給定3個(gè)或更多值的累計(jì)操作,則不允許使用該函數(shù),因?yàn)閍ccumulate()只接受迭代器,迭代器每次調(diào)用next()返回至多1個(gè)元素。
3.compress()函數(shù)
函數(shù)??compress()??可以根據(jù)我們的喜好來過濾內(nèi)容。與函數(shù)??filter()??函數(shù)不同,函數(shù)??compress()??需要傳入相應(yīng)的標(biāo)志位來決定是否應(yīng)該保留每個(gè)值。
舉個(gè)例子會更加直觀,相關(guān)樣例代碼如下:
importitertools
data=[3,4,6,2,1,9,0,7,5,8]
selector=[1,0,0,0,1,1,0,1,1,0]
res=press(data,selector)
print(list(res))
#[3,1,9,7,5]
在上面的示例中,如果數(shù)據(jù)是奇數(shù),則選擇器將為1,否則為0。因此,函數(shù)??compress()??操作的結(jié)果將只是保留原始數(shù)據(jù)中的奇數(shù)。
4.groupby()函數(shù)
在許多情況下,我們會在Python中以隨機(jī)順序獲得一個(gè)元組列表,假如我們希望按值對它們進(jìn)行分組。此時(shí)是函數(shù)??groupby()??發(fā)揮作用的完美場景!
函數(shù)??groupby()??將接受一個(gè)可迭代的參數(shù)和一個(gè)返回值的函數(shù),然后它將按函數(shù)返回的值對元組列表進(jìn)行分組。
例如,我們想按國家對以下城市進(jìn)行分組:
importitertools
data=[('NewYork','US'),("Shanghai","China"),
("LA",'US'),("Chongqing","China")]
forcity,groupinitertools.groupby(sorted(data,key=lambdax:x[1]),lambdax:x[1]):
foriingroup:
print("%sisin%s."%(i[0],city))
print("")
#ShanghaiisinChina.
#ChongqingisinChina.
#NewYorkisinUS.
#LAisinUS.
5.排列組合操作
排列組合可能是??itertools??庫中最令人驚嘆的函數(shù)之一,它提供了排列組合運(yùn)算符!
我們唯一需要做的就是將正確的關(guān)鍵字與輸出元組的長度一起傳遞給相應(yīng)的函數(shù),
如下例所示:
importitertools
data=[3,4,6]
com_res=binations(data,2)
print(list(com_res))
#[(3,4),(3,6),(4,6)]
com_res=itertools.permutations(data,2)
print(list(com_res))
#[(3,4),(3,6),(4,3),(4,6),(6,3),(6,4)]
com_without_replacement_res=binations_with_replacement(data,2)
print(list(com_without_replacement_res))
#[(3,3),(3,4),(3,6),(4,4),(4,6),(6,6)]
product_res=duct(data,data)
print(list(product_res))
#[(3,3),(3,4),(3,6),(4,3),(4,4),(4,6),(6,3),(6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)要領(lǐng):網(wǎng)站性能優(yōu)化關(guān)鍵點(diǎn)
- 2026年公共關(guān)系管理情境模擬題媒體溝通策略題目
- 2026年審計(jì)專業(yè)認(rèn)證試題GJB與ISO雙重標(biāo)準(zhǔn)下的審計(jì)題
- 2026年綠色能源市場與投資策略試題集
- 2026年烹飪技能競賽經(jīng)典菜肴制作標(biāo)準(zhǔn)題
- 2026年會員營銷策略有效性測試題
- 2026年測試工程師基礎(chǔ)知識與進(jìn)階知識測試題
- 2026年外語翻譯技能與教學(xué)方法試題集
- 2026年建筑師執(zhí)業(yè)資格考試題庫建筑設(shè)計(jì)與實(shí)踐操作指南
- 2025 小學(xué)二年級道德與法治上冊友好交流使用禮貌用語對話更和諧更有禮課件
- 深圳大疆在線測評行測題庫
- 金屬廠生產(chǎn)制度
- 2026安徽淮北市特種設(shè)備監(jiān)督檢驗(yàn)中心招聘專業(yè)技術(shù)人員4人參考題庫及答案1套
- 2025年航空行業(yè)空客智能制造報(bào)告
- 蒙牛乳業(yè)股份有限公司盈利能力分析
- 2025民航西藏空管中心社會招聘14人(第1期)筆試參考題庫附帶答案詳解(3卷合一版)
- (新教材)2026年人教版八年級下冊數(shù)學(xué) 21.2.1 平行四邊形及其性質(zhì) 課件
- 設(shè)備保養(yǎng)維護(hù)規(guī)程
- 2025年東營中考物理真題及答案
- DL-T+5860-2023+電化學(xué)儲能電站可行性研究報(bào)告內(nèi)容深度規(guī)定
- GB/T 46425-2025煤矸石山生態(tài)修復(fù)技術(shù)規(guī)范
評論
0/150
提交評論