说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
itertools.count() 是 Python itertools 库中的一个函数,用于创建一个从指定的起始值开始的无限迭代器,每次迭代时按指定的步长递增。这个函数非常适合生成连续的数值序列,常用于计数或生成固定步长的数值序列。
语法为 itertools.count(start=0, step=1)
创建一个迭代器,它从 start 值开始,返回均匀间隔的值。常用于 map() 中的实参来生成连续的数据点。此外,还用于 zip() 来添加序列号。
参数:
返回值:
大致相当于:
def count(start=0, step=1):
# count(10) --> 10 11 12 13 14 ...
# count(2.5, 0.5) -> 2.5 3.0 3.5 ...
n = start
while True:
yield n
n += step
当对浮点数计数时,替换为乘法代码有时精度会更好,例如: (start + step * i for i in count()) 。在 3.1 版更改: 增加参数 step ,允许非整型。
例如:
import itertools
foo = itertools.count(2, 2)
for i in foo:
print(i)
'''
2
4
6
8
10
12
...
# 按Ctrl+C退出
'''
无限长度,只能强制退出。
import itertools
# 创建一个从 0 开始,每次增加 1 的迭代器
counter = itertools.count()
# 输出前五个值
for _ in range(5):
print(next(counter))
# 输出:
'''
0
1
2
3
4
'''
import itertools
# 创建一个从 10 开始,每次增加 2 的迭代器
counter = itertools.count(start=10, step=2)
# 输出前五个值
for _ in range(5):
print(next(counter))
# 输出:
'''
10
12
14
16
18
'''
import itertools
# 创建一个从 -1 开始,每次增加 -1 的迭代器
counter = itertools.count(start=-1, step=-1)
# 输出前五个值
for _ in range(5):
print(next(counter))
# 输出:
'''
-1
-2
-3
-4
-5
'''
import itertools
# 创建一个从 0 开始,每次增加 0.5 的迭代器
counter = itertools.count(start=0, step=0.5)
# 输出前五个值
for _ in range(5):
print(next(counter))
# 输出:
'''
0.0
0.5
1.0
1.5
2.0
'''
itertools.count 可以用于为其他可迭代对象添加索引。
import itertools
data = ['a', 'b', 'c']
for index, value in zip(itertools.count(), data):
print(index, value)
# 输出:
'''
0 a
1 b
2 c
'''
可以与其他迭代器一起使用,以控制循环的次数。
import itertools
for i in itertools.count(start=1):
print(i)
if i >= 5:
break
# 输出:
'''
1
2
3
4
5
'''
可以轻松生成一个等差数列。
import itertools
counter = itertools.count(start=0, step=3)
for _ in range(5):
print(next(counter))
# 输出:
'''
0
3
6
9
12
'''
itertools.count 是一个非常强大的工具,尤其在需要生成连续数值序列的情况下非常有用。通过调整起始值和步长,可以生成各种不同类型的数值序列。
更新时间:July 3, 2024, 4:55 p.m. 标签:python 迭代 count