当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。