python内置函数range详解

range函数功能作用

python内置函数range以指定步长从start到stop产生一个整数序列,start默认为0,step默认为1。在python2中range函数返回的是列表,python3开始range函数返回的是一个可迭代对象。range函数多用于for循环和列表推导式。

range函数语法

class range(stop)
class range(start, stop[, step])

参数

  • start int类型,序列起始值
  • stop int类型,序列结束值
  • step int类型,步长,可以为负数

产生的序列为左闭右开[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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案