當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Itertools.count()用法及代碼示例

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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。