python内置函数range以指定步长从start到stop产生一个整数序列,start默认为0,step默认为1。在python2中range函数返回的是列表,python3开始range函数返回的是一个可迭代对象。range函数多用于for循环和列表推导式。
class range(stop)
class range(start, stop[, step])
产生的序列为左闭右开[start, stop),序列的最大值一定小于stop。
range函数仅传stop
>>> type(range(10))
<class 'range'>
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range函数的返回值是range类型,是可迭代对象,使用list函数可将其转为列表,程序仅指定了stop,start默认为0, step 默认为1。
range函数指定start和stop
>>> list(range(1, 5))
[1, 2, 3, 4]
step默认为1,产生的序列范围是[1, 5),左闭右开,序列最大值小于stop。为什么range所产生的序列的最大值小于stop呢,这里的原因与列表切片操作不包含结束索引是相同的。
range函数产生序列不包含stop,有利于理解程序的行为,比如range(5)产生的序列是0,1,2,3,4, 序列从0开始,到4结束,一共5个数值,刚好于range传入的stop参数相呼应,你能一眼看出range函数产生序列的长度。但如果包含了stop,range(5) 产生的序列是从0到5,序列长度就是6,这样极容易产生误解和混乱。如果range(5) 产生的序列是从1到5,包含了5同时长度也是5,似乎也说得通,但编程语言的索引都是从0开始的,在实践中,我们产生从0开始的序列比产生从1开始的序列更加有用。
在指定start和 stop的情况下,range函数产生序列的长度正好是stop - start。
range函数指定step
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
>>> list(range(10, 0, -2))
[10, 8, 6, 4, 2]
QQ交流群: 211426309