📜  Python – Itertools.count()

📅  最后修改于: 2022-05-13 01:55:40.429000             🧑  作者: Mango

Python – Itertools.count()

Python Itertools 是一种创建复杂迭代器的好方法,它有助于加快执行时间并编写内存高效的代码。 Itertools为我们提供了用于创建无限序列的函数,而itertools.count()就是这样一个函数,它的功能与听起来一样,很重要!

注意:更多信息请参考Python Itertools

Itertools.count()

itertools.count()通常与map()一起使用来生成连续的数据点,这在处理数据时很有用。它也可以与zip一起使用,通过传递 count 作为参数来添加序列。

让我们通过一些简单的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)