Python Itertools是創建複雜迭代器的好方法,這有助於縮短執行時間並編寫內存效率高的代碼。Itertools
為我們提供了創建無限序列的函數,並且itertools.count()
就是這樣的函數之一,它確實可以聽起來像,它很重要!
注意:有關更多信息,請參閱Python Itertools。
Itertools.count()
itertools.count()
通常與map()
生成連續的數據點,這在處理數據時很有用。它也可以與zip
通過傳遞count作為參數來添加序列。
用法: itertools.count(start=0, step=1)
參數:
start:序列的開始(默認為0)
step:連續數字之間的差異(默認為1)
返回:返回其.__next__()方法返回連續值的計數對象。
讓我們使用一些簡單的Python程序深入了解這把強大的劍。
例1:創建等間距的數字列表
itertools.count()
可用於輕鬆生成無限遞歸序列。我們來看一下
# Program for creating a list of
# even and odd list of integers
# using count()
from itertools import count
# creates a count iterator object
iterator =(count(start = 0, step = 2))
# prints a odd list of integers
print("Even list:",
list(next(iterator) for _ in range(5)))
# creates a count iterator object
iterator = (count(start = 1, step = 2))
# prints a odd list of integers
print("Odd list:",
list(next(iterator) for _ in range(5)))
輸出:
Even list:[0, 2, 4, 6, 8] Odd list:[1, 3, 5, 7, 9]
同樣,我們也可以生成一個負數和浮點數的序列。為了提高浮點數的準確性,請使用(start + step * i for i in count())
。
例2:模擬enumerate()
使用itertools.count()
如前麵提到的,count()
可以與zip()
。讓我們看看如何使用它來模仿enumerate()
甚至不知道清單的長度!
# Program to emulate enumerate()
# using count()
# list containing some strings
my_list =["Geeks", "for", "Geeks"]
# count spits out integers for
# each value in my list
for i in zip(count(start = 1,
step = 1), my_list):
# prints tuple in an enumerated
# format
print(i)
輸出:
(1, 'Geeks') (2, 'for') (3, 'Geeks')
注意:使用時必須格外小心itertools.count()
因為很容易陷入無限循環。
以下代碼的函數與while True:
因此必須指定適當的終止條件。
for i in count(start=0, step=2):
print(i)
注:本文由純淨天空篩選整理自nishkarsh146大神的英文原創作品 Python – Itertools.count()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。