Python 中内置函数 range() 用法扩展
首先 range
他是一个不可变的数字序列,通常被用于需要循环的特定次数的循环中,它的返回值是一个 range
对象.
>>> range(10)
range(0, 10)
>>> type(range(10))
<class 'range'>
range
函数可以接收 3 个参数,start/stop/step 顾名思义,三个参数分别为 开始/结束/步长 ,start/step 是可选择参数,不传入时 start 默认为 0,step 默认 为1.
>>> list(range(5))
[0, 1, 2, 3, 4, 5]
>>> list(range(1, 5))
[1, 2, 3, 4, 5]
# 在传入步长时,start 也要传入
# 不然会像下面的 list(range(5, -1)) 一样,得到的是个空值
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, 5, -1))
[5, 4, 3, 2, 1, 0]
>>> list(range(0, -5, -1))
[0, -1, -2, -3, -4, -5]
# 倒序,如果补偿不为 -1 会得到一个空值
>>> list(range(5, -1, -1))
[5, 4, 3, 2, 1]
>>> list(range(5, -1))
[]
注意: range
包含的绝对值大小不能超过 sys.maxsize
限制的大小,否则会抛出 OverflowError
错误.
range
函数比 list/tuple
优势的在于它不需要储存整个数据,range
只要储存 start/stop/step,不管它的长度有多长,所以占用的内存比较小。
range
函数还有一些其他的功能,如: 他可以像列表一样切片、内容测试、索引、负索引以及值运算
>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
# 判断是否在 range 对象中
>>> 11 in r
False
>>> 8 in r
True
# 正索引
>>> r[5]
10
# 负索引
>>> r[-1]
18
# 切片还是返回的 range 对象
>>> r[:5]
range(0, 10, 2)