<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
Python的內建模組itertools
提供了非常有用的用於操作迭代物件的函數,itertools提供的幾個“無限”迭代器
import itertools n = 0 natuals = itertools.count(1) for m in natuals: print(m)
因為count(n)
會建立一個無限的迭代器,起始數位為n,迭代至無窮大。所以上述程式碼會列印出自然數序列,根本停不下來,只能按Ctrl+C退出。
執行結果:
0 1 2 3 4 5 6 7 ...
cycle()
會把傳入的一個序列無限重複下去。
範例1、迴圈列表中的內容:
natuals = itertools.cycle([1, 2, 3]) for m in natuals: print(m)
執行結果:
1 2 3 1 2 3 1 2 3 ...
範例2、字串中字元迴圈:
import itertools cs = itertools.cycle('ABC') # 注意字串也是序列的一種 for c in cs: print(c)
執行結果:
A B C A B C A B C ...
repeat()
負責把一個元素無限重複下去(預設行為),不過如果提供第二個引數就可以限定重複次數。
ns = itertools.repeat('A', 3) for n in ns: print(n)
執行結果:
A A A ...
無限序列只有在for迭代時才會無限地迭代下去,如果只是建立了一個迭代物件,它不會事先把無限個元素生成出來,事實上也不可能在記憶體中建立無限多個元素。無限序列雖然可以無限迭代下去,但是通常我們會通過takewhile()等函數根據條件判斷來擷取出一個有限的序列。
import itertools natuals = itertools.count(1) ns = itertools.takewhile(lambda x: x <= 10, natuals) print(list(ns))
執行結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
迭代器測試:
對於有限資料的迭代器,每呼叫一次,迭代器內資料彈出。
import itertools natuals = itertools.count(1) ns = itertools.takewhile(lambda x: x <= 3, natuals) for n in ns: print(n) print(list(ns))
執行結果:
1 2 3 []
chain()可以把一組迭代物件串聯起來,形成一個更大的迭代器。
for c in itertools.chain('ABC', 'XYZ'): print(c)
執行結果:
'A' 'B' 'C' 'X' 'Y' 'Z'
groupby()
把迭代器中相鄰的重複元素挑出來放在一起,更多的用於字串。
for key, group in itertools.groupby('AAABBBCCAAA'): print(key, list(group))
執行結果:
A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']
實際上挑選規則是通過函數完成的,只要作用於函數的兩個元素返回的值相等,這兩個元素就被認為是在一組的,而函數返回值作為組的key。如果我們要忽略大小寫分組,就可以讓元素'A'和'a'都返回相同的key。
for key, group in itertools.groupby('AaaBBbcCAAa', lambda c: c.upper()): print(key, list(group))
執行結果:
A ['A', 'a', 'a']
B ['B', 'B', 'b']
C ['c', 'C']
A ['A', 'A', 'a']
到此這篇關於python itertools包內建無限迭代器的文章就介紹到這了,更多相關python itertools內建迭代器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45