(內(nèi)部模塊)itertools

# Python內(nèi)建的模塊itertools提供了非常有用的用于操作迭代對(duì)象的函數(shù)
# count()會(huì)創(chuàng)建一個(gè)無限的迭代器
import itertools
# natuals = itertools.count(1)
# for n in natuals:
#     print(n)

# cycle()會(huì)把傳入的字符串一直重復(fù)的迭代循環(huán)下去
# cs = itertools.cycle('ABC')
# for c in cs:
#     print(c)

# repeat()負(fù)責(zé)把一個(gè)元素?zé)o限重復(fù)下去.不過如果提供第二個(gè)參數(shù)就可以限定重復(fù)的次數(shù).
ns = itertools.repeat('ABC', 3)
for n in ns:
    print(n)

# 我們通常用takewhile()等函數(shù)根據(jù)條件判斷來截取一個(gè)有限的序列
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
print(list(ns))

# itertools提供了更好用的操作迭代對(duì)象的函數(shù)
# chain()函數(shù), 將迭代對(duì)象串聯(lián)起來么形成更大的迭代器
for c in itertools.chain('ABC', 'XYZ'):
    print(c)

# groupby()把迭代器中相鄰的重復(fù)元素跳出來放在一起.
# for key, group in itertools.groupby('AAABBBCCAAA'):
#     print(key, list(group))

# 實(shí)際上挑選規(guī)則是通過函數(shù)完成的, 只要作用于函數(shù)的兩個(gè)元素返回的值
# 相等, 這兩個(gè)元素就被認(rèn)為是在一組的.而函數(shù)返回值作為組的key.
# 如果我們要忽略大小寫分組.可以讓'A', 'a'返回相同的key
for key, group in itertools.groupby('AaaBBbcCAAa', lambda c:c.upper()):
    print(key, list(group))

# itertools模塊提供的全部是處理迭代功能的函數(shù).他們的返回值不是list
# 而是Iterable.只有用for循環(huán)迭代的是否才真正的計(jì)算.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容