Python – Itertools.count()
Python Itertools 是一种创建复杂迭代器的好方法,它有助于加快执行时间并编写内存高效的代码。 Itertools
为我们提供了用于创建无限序列的函数,而itertools.count()
就是这样一个函数,它的功能与听起来一样,很重要!
注意:更多信息请参考Python Itertools
Itertools.count()
itertools.count()
通常与map()
一起使用来生成连续的数据点,这在处理数据时很有用。它也可以与zip
一起使用,通过传递 count 作为参数来添加序列。
Syntax: itertools.count(start=0, step=1)
Parameters:
start: Start of the sequence (defaults to 0)
step: Difference between consecutive numbers (defaults to 1)
Returns: Returns a count object whose .__next__() method returns consecutive values.
让我们通过一些简单的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:使用itertools.count()
模拟enumerate()
)
如前所述, 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)