Python3 range() 函数详解 获取一个范围可迭代对象
range()
函数的主要作用是返回一个可迭代的范围对象,范围类型表示不可变的数字序列,通常用于在for循环中循环特定的次数。
它是Python的内置函数,在python文件中直接可以使用。
语法
range(stop)
range(start, stop[, step])
参数
stop - 范围的结束值,最终结果的最大值是一定小于stop,这取决于step的值。默认情况下(step未设置或者设置为1),最大值等于stop - 1。另外如果range()函数只设置了一个参数,就当做stop使用,那么就相当于是range(0, stop)。
start - 范围的开始值,默认为0。
step - 范围的步进值,默认为1。不能将步进值设置0,会报错。如果要返回负数的范围,需要将步进值也设置为负数,否则返回空。
返回值
可迭代的范围对象
实例
§ 实例1 - 常规用法
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(1,6))
[1, 2, 3, 4, 5]
>>> list(range(0,11,2))
[0, 2, 4, 6, 8, 10]
>>> list(range(0,-5,-1))
[0, -1, -2, -3, -4]
§ 实例2 - 查找、切片和负索引
#创建一个范围对象
>>> r = range(0, 20, 2)
#查看范围对象
>>> r
range(0, 20, 2)
#查看它的序列
>>> list(r)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
#查找判断
>>> 11 in r
False
>>> 10 in r
True
#索引 - 通过值获得索引
>>> r.index(10)
5
#索引 - 通过索引获得值
>>> r[5]
10
#切片
>>> r[:5]
range(0, 10, 2)
#负索引
>>> r[-1]
18
§ 实例3 - 范围对象的对比
两个范围对象是可以进行对比的,以确实是否相等或不等。但需要注意的是,它们对比的是范围对象的最终序列结果,而不是对比它们的对象属性(参数)。也就可能导致2个不同参数(start、stop、step)的范围对象是相等的,请看下面例子。
>>> range(0,5) == range(0,5)
True
>>> range(0) == range(0,-1)
True
>>> range(0, 3, 2) == range(0, 4, 2)
True
#上述3个相等判断的例子,除第1个是参数和结果完全一致的,其余两个参数都是不一样的。但它们的结果序列却是一致的,这就导致了它们也返回True。