網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Python中itertools模塊
一、 簡(jiǎn)介
itertools是python內(nèi)置的模塊,使用簡(jiǎn)單且功能強(qiáng)大
官方文檔地址:https://docs.python.org/zh-cn/3/library/itertools.html
itertools模塊標(biāo)準(zhǔn)化了一個(gè)快速、高效利用內(nèi)存的核心工具集,這些工具本身或組合都很有用。它們一起形成了“迭代器代數(shù)”,這使得在純Python中有可能創(chuàng)建簡(jiǎn)潔又高效的專用工具。
同時(shí),itertools模塊是python的內(nèi)置庫(kù),我們可以直接使用,不需要進(jìn)行額外的安裝
這里講解一些常用的函數(shù),其余函數(shù)請(qǐng)到官方文檔查看學(xué)習(xí)。
二、 使用介紹
1、 常用迭代器
1.1 chain
函數(shù)介紹:chain可以把一組迭代對(duì)象串聯(lián)起來,形成一個(gè)更大的迭代器
語(yǔ)法:(class) chain(*iterables: Iterable[str])
import itertools l1 = ["A", "B"] l2 = ["C", "D"] print(list(itertools.chain(l1, l2))) # 將兩個(gè)列表展開,當(dāng)然,也可以用到一些可迭代對(duì)象里面去,比如說字符串等,返回一個(gè)可迭代對(duì)象
1.2 groupby
函數(shù)介紹:groupby 把迭代器中相鄰的重復(fù)元素(key)挑出來放一起
語(yǔ)法:(class) groupby(iterable: Iterable[_T1@__new__], key: None = ...)
import itertools for key, value in itertools.groupby("hello world! My name is Steve Anthony"): print(key, list(value)) """結(jié)合key使用""" import itertools data = [ (1, "Make", 93), (1, "Jack", 100), (2, "Lucy", 90) ] for key, value in itertools.groupby(data, key=lambda student: student[0]): print(key, list(value))
2、 無窮迭代器
2.1 count
函數(shù)作用:生成無界限序列,count(start=0, step=1) ,示例從100開始,步長(zhǎng)為2,循環(huán)10,打印對(duì)應(yīng)值;必須手動(dòng)break,count()會(huì)一直循環(huán)。
語(yǔ)法:count(start: int, [step: _Step = ...])
import itertools for i in itertools.count(10): print(i)=
2.2 cycle
函數(shù)作用:對(duì)可迭代容器里面的元素進(jìn)行無限循環(huán)
語(yǔ)法:(class) cycle(__iterable: Iterable[int], /)
import itertools for i in itertools.cycle(range(10)): print(i)
2.3 repeat
函數(shù)作用:對(duì)可迭代容器里面的元素重復(fù)times次
語(yǔ)法:repeat(object: range, times: int)
import itertools for i in itertools.repeat(range(10), 2): print(i)
3、排列組合迭代器
3.1 product
函數(shù)作用:返回笛卡爾積,相當(dāng)于嵌套的for循環(huán),重復(fù)repeat次
語(yǔ)法:product(*iterables: Iterable, repeat: int = 1)
import itertools for i in itertools.product([1, 2], ["A", "B", "C"]): print(i)
3.2 permutations
函數(shù)作用:生成一個(gè)長(zhǎng)度為r的元組,元組中存放所有可能的排列,無重復(fù)元素
語(yǔ)法:(class) permutations(iterable: Iterable, r: int | None = ...)
import itertools for i in itertools.permutations([1, 2, 3], 3): # r的默認(rèn)值為2 print(i)
3.3 combinations
函數(shù)作用:生成一個(gè)長(zhǎng)度為r的元組,有序,并且無重復(fù)元素
語(yǔ)法:(class) combinations(iterable: Iterable[_T@__new__], r: Literal[2])
import itertools for i in itertools.combinations([1, 2, 3], 3): print(i)
3.4 combinations_with_replacement
函數(shù)作用:生成一個(gè)長(zhǎng)度為r的元組,有序,有重復(fù)元素
import itertools for i in itertools.combinations_with_replacement([1, 2, 3], 3): print(i)
這些是一些常用的迭代器函數(shù),如果還想要更加深入的了解的話,可以去官方文檔查看!
原文鏈接:https://blog.csdn.net/qq_62789540/article/details/128466846
相關(guān)推薦
- 2022-12-26 使用python如何對(duì)圖片進(jìn)行壓縮_python
- 2021-12-01 C++?解決求兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)問題_C 語(yǔ)言
- 2022-05-25 Python學(xué)習(xí)之文件的創(chuàng)建與寫入詳解_python
- 2022-04-12 Http 請(qǐng)求常見狀態(tài)碼報(bào)錯(cuò)(200/404/500)
- 2022-11-12 超詳細(xì)解析C++實(shí)現(xiàn)快速排序算法的方法_C 語(yǔ)言
- 2022-11-21 得物基于StarRocks的OLAP需求實(shí)踐詳解_數(shù)據(jù)庫(kù)其它
- 2022-04-20 python數(shù)據(jù)類型中的字符串你了解多少_python
- 2022-05-05 Tomcat使用https配置實(shí)戰(zhàn)教程_Tomcat
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支