目录

描述

语法

返回值

使用示例

1. 仅保留stop参数

2. 指定起始位置和终止位置

3. 指定步长

使用注意

1. 所有参数都是整形。不能给出浮点数序列

2. 当start参数省略时,step参数也必须省略

3. step小于1没有任何意义

4. 步长不能为0

5. range()的返回值类型是range


描述

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 "<stdin>", line 1, in <module>
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 "<stdin>", line 1, in <module>
ValueError: range() arg 3 must not be zero

5. range()的返回值类型是range

在Python3中,range函数的返回值类型不再是列表,而是一个range类型。使用者可以使用list函数继续再将其转化成列表。

>>> test = range(5)
>>> type(test)
<class 'range'>
>>> list(test)
[0, 1, 2, 3, 4]
>>> 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐