通常情况下,range只能用整数作为步长,如:
for i in range(1, 10, 2):
print(i)
结果显示:

如果使用小数步长,则报错:
for i in range(1, 10, 2.1):
print(i)

我们需要借助迭代器协议:
class Range():
def __init__(self,start, end, step):
self.start = start - step
self.end = end
self.step = step
def __iter__(self):
return self
def __next__(self):
self.start += self.step
if self.start >= self.end :
raise StopIteration
return self.start
for i in Range(1, 10, 2.1):
print(round(i, 1))
运行结果如下:

从而实现小数步长。
本文介绍了一种方法,通过自定义range函数来支持浮点数步长,解决了Python内置range函数仅支持整数步长的问题。通过创建一个名为Range的类,并实现迭代器协议,我们可以按任意浮点数步长生成序列。
1468





