描述
range函数返回一个range类型的整数序列,一般用在循环结构中。
range(start, stop, step)
参数名称 | 说明 | 备注 |
start | 计数起始位置 | 整数参数,可省略。省略时默认从0开始计数 |
stop | 计数终点位置 | 不可省略的整数参数。计数迭代的序列中不包含stop |
step | 步长 | 可省略的整数参数,默认时步长为1 |
range函数返回一个range对象实例。实例包含了计数的起始位置、终点位置和步长等信息。
1. 仅保留stop参数
>>> test = range(10)
>>> test
range(0, 10)
>>> list(test)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. 指定起始位置和终止位置
>>> test = range(3,10)
>>> test
range(3, 10)
>>> list(test)
[3, 4, 5, 6, 7, 8, 9]
3. 指定步长
>>> test = range(0, 10, 2)
>>> test
range(0, 10, 2)
>>> tuple(test)
(0, 2, 4, 6, 8)
1. 所有参数都是整形。不能给出浮点数序列
>>> range(0.1, 0.3)
traceback (most recent call last):
file "", line 1, in
typeerror: 'float' object cannot be interpreted as an integer
2. 当start参数省略时,step参数也必须省略
当star参数省略的时候,step参数也应省略。否则python会自动将step参数理解为stop,将stop理解为start
例如想给出一个从0到14的序列,步长为2。可是输出的序列转换成列表后却是空列表:
>>> test = range(10, 2)
>>> list(test)
[]
产生这种现象的原因就是python总是把双参数的range函数当作为range(start,stop)。即一个从10开头,到2结尾的序列。这样的序列是没有任何数字的空序列,因此在转换成列表的过程中,就产生了空列表。
3. step小于1没有任何意义
不同于字符串和列表的分片,range函数中的step并不能将序列反向。当step小于1的时候,序列为空:
>>> test = range(-10, -2, -3)
>>> list(test)
[]
4. 步长不能为0
当step参数为0时,python报错:range()函数的第三个参数不能为0
>>> test = range(-10, 2, 0)
traceback (most recent call last):
file "", line 1, in
valueerror: range() arg 3 must not be zero
5. range()的返回值类型是range
在python3中,range函数的返回值类型不再是列表,而是一个range类型。使用者可以使用list函数继续再将其转化成列表。
>>> test = range(5)
>>> type(test)
>>> list(test)
[0, 1, 2, 3, 4]
>>>