Python教程014 标准数据类型 range对象
文章目录
range对象定义
range类型表示一个不可变的数字序列,通常用于在for循环中,循环特定次数。range构造函数生成range对象。
range构造函数有两种形式。
range(stop)
range(start, stop[, step])
start参数:起始位置(如果未提供参数,则为0)
stop参数:终止位置
step参数:步长(如果未提供参数,则为1)
range构造函数的参数必须是整数(内置int或任何实现__index__方法的对象)。如果step参数为零,则会引发ValueError。用list()函数将range对象转换成列表。
例如:
|
|
执行以上程序会输出如下结果:
|
|
e = range(10.1)
会报错,详细如下。
|
|
如果 step 为正值,确定 range r 内容的公式为 r[i] = start + step*i 其中 i >= 0 且 r[i] < stop。 如果 step 为负值,确定 range 内容的公式仍然为 r[i] = start + step*i,但限制条件改为 i >= 0 且 r[i] > stop. 如果 r[0] 不符合值的限制条件,则该 range 对象为空。 range 对象确实支持负索引,但是会将其解读为从正索引所确定的序列的末尾开始索引。 元素绝对值大于 sys.maxsize 的 range 对象是被允许的,但某些特性 (例如 len()) 可能引发 OverflowError。
例如:
|
|
与常规列表或元组相比,range类型的优点是,range对象将始终占用相同(小)的内存量,而不管它表示的范围大小(因为它只存储开始、停止和步骤值,根据需要计算单个项和子范围)。
range对象实现collections.abc.sequence ABC,并提供包含测试,元素索引查找,切片和对负索引的支持等功能。
例如:
|
|
使用==和!=测试range对象是否相等时,将它们作为序列进行比较。也就是说,如果两个range对象表示相同的值序列,则认为它们是相等的。(注意,比较相等的两个range对象可能具有不同的start、stop和step属性。)
例如:
|
|
执行以上程序会输出如下结果:
|
|
转载请注明本网址。