通常情况下,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))
运行结果如下:
从而实现小数步长。