Python的內建模組itertools

2022-03-25 09:28:27 字數 1832 閱讀 8066

python的內建模組提供了非常有用的用於操作迭代物件的函式。並且itertools相當高效且節省記憶體。

count(初值=0, 步長=1)

count 迭代器會返回從傳入的起始引數開始的均勻間隔的數值。count 也可以接收指定的步長引數。

from itertools import count

for i in count(10): #從10開始無限迴圈,預設步長等於1

if i > 20:

break

else:

print(i)

islice()

返回乙個迭代器,該迭代器的next()方法從

可迭代的如果指定start,則跳過前面的所有元素;

否則,start預設值為零。

step預設為1。如果

step指定為另乙個值,確定有多少個值

在連續呼叫之間跳過。

工作方式類似於列表中的slice(),

但是返回乙個迭代器。

from itertools import islice,count

#方式一:islice(迭代物件, 迭代數量)

for i in islice(count(10), 5):

print(i)

for i in islice('abcdefghigk', 5):

print(i)

#方式二:islice(迭代物件, 開始索引,結束索引,步長)

#步長不寫預設為1

s=islice('abcdefghigk',1,4,2)

a=list(s)

print(a)

cycle(可迭代物件)

從可迭代物件中返回元素,直到它被耗盡。

然後無限地重複這個序列。

from itertools import cycle

count = 0

for item in cycle('xyz'):

if count > 7:

break

print(item)

count += 1

repeat()

把乙個元素無限重複下去,不過如果提供第二個引數就可以限定重複次數

from itertools import repeat

ns = itertools.repeat('abc', 3)

for n in ns:

print(n)

takewhile(判斷條件,迭代物件)

通過判斷條件,終止迭代

natuals = itertools.count(1)

ns = itertools.takewhile(lambda x: x <= 10, natuals)

s=list(ns)

print(s)

chain(可迭代物件,可迭代物件,……)

chain()可以把一組及對個迭代物件串聯起來,形成乙個更大的迭代器:

個人感覺沒什麼卵用。

first=[['1','2','3','4','4'],['2','4','2']]

print(*first)

x=['abc','def']

print(*x)

for i in itertools.chain(*first,*x):

print(i)

python 內建函式 iter

本文主要想說明 如果iter 函式的引數是乙個容器物件,那麼iter 函式返回該容器物件的乙個新的迭代器。如果iter 函式的引數是乙個迭代器,那麼iter 函式返回輸入的迭代器。可以根據這個性質,連續執行兩次iter 判斷輸入iter 的是容器物件還是迭代器。直接上 usr bin env pyt...

python內建模組 Python 內建模組

內建模組 python有一套很有用的標準庫 standard library 標準庫會隨著python直譯器,一起安裝在你的電腦中的。它是python的 乙個組成部分。這些標準庫是python為你準備好的利器,可以讓程式設計事半功倍。常用標準庫 標準庫 說明 builtins 內建函式預設載入 os...

Python的內建模組

1 導包 導模組 import 模組名稱 包名稱 以os模組為例 通過dir 可以檢視該模組下的所有命令 import 包名稱 as 以os.path模組為例 給os.path重新命名,加快導包速度。from 包名稱 import 建議使用方法 以os.path模組為例 2 os模組 os.cpu ...