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)