range(stop)
range(start, stop[, step])
r[i] = start + step*i
其中 i >= 0
且 r[i] <
stop
r[i] = start + step*i
,但限制条件改为 i >= 0
且 r[i] >
stop
都是 range 实例对象
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> tuple(range(0, 10, 3))
(0, 3, 6, 9)>>> set(range(0, -10, -1))
{0, -1, -2, -3, -4, -5, -6, -7, -8, -9}
>>> list(range(0))
[]
>>> list(range(1, 0))
[]
相比常规的 list、tuple,range 的优势在于range 对象总是占用固定数量的较小内存,无论其所表示的范围有多大
range 对象实现了 collections.abc.Sequence ,提供了包括 index、索引、切片等特性
r = range(0, 20, 2)
print(r)
print(list(r))
# in
print(10 in r)
print(11 not in r)
# index
print(r.index(6))
# 切片
print(r[2])
print(r[-1])
# 输出结果
range(0, 20, 2)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
True
True
3
4
18
但是切片仅支持索引取值 [ ],不支持 [ : ] 来取值
使用 ==
和 !=
检测 range 对象是否相等是将其作为序列来比较
r1 = range(0, 4, 2)
r2 = range(0, 3, 2)
print(r1 == r2)
# 输出结果
True
for item in range(3):
print(item)
# 输出结果
0
1
2