哈喽兄弟们!今天我们聊聊Python中很重要的range对象!(本文章基于Python3环境,Python2环境下的range会有所不同,但并不影响我们使用)
一、range对象是什么
每一个Python初学者都一定在开始学Python不久就一定会遇到”range函数“,大家都把他叫做“range函数”,是因为我们在用它的时候像调用函数一样,只需要给它传入参数,它就可以给出你想要的结果。这一点和函数是一样的,于是大家就习惯上把它叫做函数。但其实它并不是一个函数,因为它是惰性的,什么叫惰性的呢?给大家看看
print(range(1,3)) # 如果它是函数,得到的结果是0,1,2,然而
于是,大家恍然大悟,”它是迭代器“,一开始我也以为是,但是后面才知道,这家伙没那么简单,哪里不简单呢?我们来看看迭代器长啥样。比如迭代器zip
并且种种表现也证明了它并不是一个迭代器,“迭代器是惰性的一次性可迭代对象”,也就是说,我们在迭代器是遍历一个元素就少一个,但是它不是,甚至,我们可以对它进行索引(jupyter notebook环境)
那么,它到底是什么呢?如果实在要给它一个名字,可以称它为“懒序列”,也就是说,实际上它就是列表元组集合一类的东西,然而,它比较”懒“,那么什么叫懒呢?这里我需要讲一下。为了好理解,我用简单的例子比喻,我知道你们也不想看定义。
补充:
懒惰机制在计算机中就是说在为了缓解内存的压力,我们设置懒惰机制不要将计算的结果一次给出,而是在计算机使用者(可以是人也可以是其他机器)需要时再通过计算给出其需要的计算结果。现在再看看迭代器,实际上迭代器就是这样一个惰性机制。不会像列表这样的可迭代对象一次给出所有计算结果。range对象也有这样的特性。
二、基本语法
实际上range对象是什么并不是那么的那么的重要,而怎样用它才是我们最应该重点关注的。基本语法
这是它的使用说明,如果看不懂没有关系!看不懂才有我的用武之地
range(start,stop[,step]) # []代表不是必须
参数说明:
start 默认为0,与stop配合使用,用来指定迭代范围的开始。
例如
迭代range(5)得到的是
0,1,2,3,4 表示从0到4 start和stop表示的范围规则:“前闭后开”(也就是说取不到stop)
stop 与start配合使用,指定迭代范围的结束(并不包括stop本身)
例如
迭代range(1,5)得到的是
1,2,3,4 表示从1到4
step 步长,默认为1,表示迭代时的增量(或减量),在使用step时必须要指定第一个参数start
例如
迭代range(1,5,2) ,得到
1,3 得到1和3,并不会得到5,因为“前闭后开”,而步长为2,代表取出规则是“取一个元素跳过一个元素再接着取”
三、应用举例
简单知道range对象的语法以后,我们进行应用举例。
最常用组合—-for循环
我们在上面已经讲到range对象是一个“懒序列”,那么通常我们需要将里面的元素取出来使用。因此,最常用的便是与for 循环配合使用。直接上例子。
1、stop指定范围结束,start默认为0,stop步长默认为1
for i in range(9): # 此时9是stop,指定范围结束,start默认为0,stop步长默认为1
print(i)
2、指定start、stop,默认stop
for i in range(2,9):
print(i)
3、指定stop,此时start和stop不能省略
for i in range(2,9,2):
print(i)
4、stop为负数,此时start可以大于stop,例如
for i in range(9,2,-2): # 从9到2,步长为-2,没迭代一次增加-2,即下降2
print(i)
思考:如果我们执行以下代码,能得到什么?,还是报错?
x for i in range(9,2):
print(i)
单独使用:
1、独自打印
2.索引
思考:那么可以切片吗?如果可以,又会得到怎样的结果呢?
四、总结
1、range对象的使用和理解都不难,但是在python的使用中非常常用!
2、range对象既不是函数也不是迭代器,可以叫它“懒序列”
3、参数解释:start为范围开始,stop为范围结束,stop为步长
4、range对象经常和for循环配合使用
5、可以对range对象进行索引
刚接触Python小伙伴,有什么不懂得都可以问我。
我还准备了数百本电子书,大量的视频教程以及源代码,直接点文末名片领取。
好了,今天的内容就分享到这里,我们明天见!
如果对你有帮助,不要忘记分享给好朋友哦!关注我,防止错过更多内容!
文章出处登录后可见!