Python range函数详解

range类型表示一个不可变的数字序列,通常用于在for循环中循环特定的次数。

class range(stop)

class range(start, stop[, step])

范围构造函数的参数必须是整数(内置的int或任何实现__index__特殊方法的对象)。如果省略了step参数,则默认为1。如果忽略start参数,它默认为0。如果步骤为零,则会引发ValueError。
1.对于正步骤,范围r的内容由公式r[i] = start + step*i确定,其中i >= 0, r[i] < stop。
2.对于负步,范围的内容仍然由公式r[i] = start + step*i决定,但约束条件是i >= 0和r[i] > stop。
3.如果r[0]不满足值约束,则范围对象将为空。范围确实支持负索引,但它们被解释为从由正索引决定的序列的末尾开始的索引。
4.包含绝对值大于sys的范围。maxsize是允许的,但是某些特性(如len())可能会导致OverflowError。

范围的例子:

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]

range实现除了连接和重复之外的所有公共序列操作(由于range对象只能表示遵循严格模式的序列,而重复和连接通常会违反该模式)。

start:开始参数的值(如果没有提供参数,则为0)

stop:停止参数的值。

step:步骤参数的值(如果没有提供参数,则为1)

的优势范围类型/常规列表或元组是一系列对象总是采取相同的(小)的内存数量,无论它所代表的范围的大小(因为它只存储启动、停止和步值,计算所需的个别项目和子范围)。

范围对象实现集合。序列ABC,并提供一些特性,如容器测试、元素索引查找、切片和对负索引的支持(参见序列类型——列表、tuple、范围):

>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18
测试范围对象是否与==和!=相等。也就是说,如果两个范围对象代表相同的值序列,那么它们就被认为是相等的。(注意,比较相等的两个范围对象可能具有不同的开始、停止和步骤属性,例如range(0) = range(2,1,3)或range(0,3,2) = range(0,4,2))。

在版本3.2中更改:实现序列ABC。支持切片和负索引。测试int对象的成员关系,而不是遍历所有项目。

在版本3.3中更改:定义' = '和' != '根据定义的值序列比较范围对象(而不是基于对象标识进行比较)。

新版本3.3:开始、停止和步骤属性。

翻译自官方文档:https://docs.python.org/3/library/stdtypes.html?highlight=range#range

猜你喜欢

转载自blog.csdn.net/qq_24909089/article/details/80802396