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