在Python中,range()
对象本身就是一个可迭代对象,所以你可以直接将range()
对象转换为迭代器。Python的range()
函数生成的数列是惰性序列,也就是说这些数字并不是一次性生成,而是当你需要的时候才会生成下一个数字。
如果你希望把一个具体的range
对象转化为一个迭代器,可以使用Python内置的iter()
函数。
r=range(2,10) # type(r)=class.range range是一个可迭代对象,惰性迭代器
it=iter(range(2,10)) # type(it)=range_iterator 是一个专属的range迭代器
print(next(it)) # 2 每次迭代按顺序输出数值
print(next(it)) # 3
print(next(it)) # 4
另外,iter(range()作为迭代器,只能对其遍历一遍,并且需要注意上次指针停留的位置。
r=range(2,10)
it=iter(r)
print(next(it))
print(next(it))
print("--------分割线--------")
for i in range(9):
print(next(it))
运行结果:
2
3
--------分割线--------
4
5
6
7
8
9 # 此处迭代结束,StopIteration