range(start, stop [,step])
左闭右开
整数
不可变
是可迭代对象,不是迭代器
关于可迭代对象和迭代器:
可获得迭代器得内置方法有zip()、enumerate()、map()、filter()、reversed()等
相同点:for循环时,两者的时间复杂度和空间复杂度是一样的
不同点:可迭代对象不支持自遍历(next()方法);迭代器不支持切片(__getitem__()方法)
为什么不是迭代器:
zip()等方法在使用的时候是对可迭代对象的二次加工,需要马上产出确定结果。可迭代对象发生变化时,作为结果的迭代器因为是消耗型的,所以不会错误地使用。
range()方法接收的对象是不可迭代对象,是初次加工的过程,既可以直接使用,也可以用于再加工。
for i in zip(range(1, 6, 2), range(2, 4, 3))
for i in zip(range(1,6,2), range(2,7,2)):
print(i, end="")
#结果:(1, 2)(3, 4)(5, 6)
(其实就是表示一个不可变的等差数列,不可以加法拼接和乘法重复)