原文: https://thepythonguru.com/python-builtin-functions/range/
于 2020 年 1 月 7 日更新
range()函数用于随时间生成一系列数字。 简单地说,它接受一个整数并返回一个范围对象(一种可迭代的类型)。 在 Python 2 中,range()返回一个list,它对处理大数据不是很有效。
range()函数的语法如下:
语法:
range([start,] stop [, step]) -> range object
| 参数 | 描述 |
|---|---|
start |
(可选)序列的起点。 默认为0。 |
stop(必填) |
序列的端点。 该项目将不包括在序列中。 |
step(可选) |
序列的步长。 默认为1。 |
现在让我们看几个示例,以了解range()的工作方式:
示例 1:
>>>>>> range(5)range(0, 5)>>>>>> list(range(5)) # list() call is not required in Python 2[0, 1, 2, 3, 4]>>>
试试看:
print(range(5))# list() call is not required in Python 2print(list(range(5)))
当使用单个参数调用range()时,它将生成从0到指定参数(但不包括它)的数字序列。 因此,序列中不包含数字5。
示例 2:
>>>>>> range(5, 10)range(5, 10)>>>>>> list(range(5, 10))[5, 6, 7, 8, 9]>>>
试一试:
print(range(5, 10))print(list(range(5, 10)))
在这里range()用两个参数5和10调用。 结果,它将生成从5到10(但不包括10)的数字序列。
您还可以指定负数:
>>>>>> list(range(-2, 2))[-2, -1, 0, 1]>>>>>> list(range(-100, -95))[-100, -99, -98, -97, -96]>>>
试一试:
print(list(range(-2, 2)))print(list(range(-100, -95)))
示例 3:
>>>>>> range(1, 20, 3)range(1, 20, 3)>>>>>>>>> list(range(1, 20, 3))[1, 4, 7, 10, 13, 16, 19]>>>
试一试:
print( range(1, 20, 3))print(list(range(1, 20, 3)))
在这里range()函数被3的step参数调用,因此它将每隔三个元素从1返回到20(当然不包括20)。
您也可以使用步骤参数来倒数。
>>>>>> list(range(20, 10, -1))[20, 19, 18, 17, 16, 15, 14, 13, 12, 11]>>>>>> list(range(20, 10, -5))[20, 15]>>>
试一试:
print(list(range(20, 10, -1)))print(list(range(20, 10, -5)))
range()函数通常与for循环一起使用以重复执行一定次数的操作。 例如,在下面的清单中,我们使用range()执行循环主体 5 次。
>>>>>> for i in range(5):... print(i)...01234>>>
试一试:
for i in range(5):print(i)
该代码在功能上等同于以下代码:
>>>>>> for i in [0, 1, 2, 3, 4]:... print(i)...01234>>>
但是,在实际代码中,应始终使用range(),因为它简洁,灵活且性能更好。
