原文: https://thepythonguru.com/python-builtin-functions/range/


    于 2020 年 1 月 7 日更新


    range()函数用于随时间生成一系列数字。 简单地说,它接受一个整数并返回一个范围对象(一种可迭代的类型)。 在 Python 2 中,range()返回一个list,它对处理大数据不是很有效。

    range()函数的语法如下:

    语法

    1. range([start,] stop [, step]) -> range object
    参数 描述
    start (可选)序列的起点。 默认为0
    stop(必填) 序列的端点。 该项目将不包括在序列中。
    step(可选) 序列的步长。 默认为1

    现在让我们看几个示例,以了解range()的工作方式:

    示例 1

    1. >>>
    2. >>> range(5)
    3. range(0, 5)
    4. >>>
    5. >>> list(range(5)) # list() call is not required in Python 2
    6. [0, 1, 2, 3, 4]
    7. >>>

    试试看:

    1. print(range(5))
    2. # list() call is not required in Python 2
    3. print(list(range(5)))

    当使用单个参数调用range()时,它将生成从0到指定参数(但不包括它)的数字序列。 因此,序列中不包含数字5

    示例 2

    1. >>>
    2. >>> range(5, 10)
    3. range(5, 10)
    4. >>>
    5. >>> list(range(5, 10))
    6. [5, 6, 7, 8, 9]
    7. >>>

    试一试:

    1. print(range(5, 10))
    2. print(list(range(5, 10)))

    在这里range()用两个参数510调用。 结果,它将生成从510(但不包括10)的数字序列。

    您还可以指定负数:

    1. >>>
    2. >>> list(range(-2, 2))
    3. [-2, -1, 0, 1]
    4. >>>
    5. >>> list(range(-100, -95))
    6. [-100, -99, -98, -97, -96]
    7. >>>

    试一试:

    1. print(list(range(-2, 2)))
    2. print(list(range(-100, -95)))

    示例 3

    1. >>>
    2. >>> range(1, 20, 3)
    3. range(1, 20, 3)
    4. >>>
    5. >>>
    6. >>> list(range(1, 20, 3))
    7. [1, 4, 7, 10, 13, 16, 19]
    8. >>>

    试一试:

    1. print( range(1, 20, 3))
    2. print(list(range(1, 20, 3)))

    在这里range()函数被3step参数调用,因此它将每隔三个元素从1返回到20(当然不包括20)。

    您也可以使用步骤参数来倒数。

    1. >>>
    2. >>> list(range(20, 10, -1))
    3. [20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
    4. >>>
    5. >>> list(range(20, 10, -5))
    6. [20, 15]
    7. >>>

    试一试:

    1. print(list(range(20, 10, -1)))
    2. print(list(range(20, 10, -5)))

    range()函数通常与for循环一起使用以重复执行一定次数的操作。 例如,在下面的清单中,我们使用range()执行循环主体 5 次。

    1. >>>
    2. >>> for i in range(5):
    3. ... print(i)
    4. ...
    5. 0
    6. 1
    7. 2
    8. 3
    9. 4
    10. >>>

    试一试:

    1. for i in range(5):
    2. print(i)

    该代码在功能上等同于以下代码:

    1. >>>
    2. >>> for i in [0, 1, 2, 3, 4]:
    3. ... print(i)
    4. ...
    5. 0
    6. 1
    7. 2
    8. 3
    9. 4
    10. >>>

    但是,在实际代码中,应始终使用range(),因为它简洁,灵活且性能更好。