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