Python中的range函数

大家好,我是翔宇!今天我们聊聊Python中很重要的range对象!(本文章基于Python3环境,Python2环境下的range会有所不同,但并不影响我们使)

range对象

1.range对象是什么

每一个Python初学者都一定在开始学Python不久就一定会遇到”range函数“,大家都把他叫做“range函数”,是因为我们在用它的时候像调用函数一样,只需要给它传入参数,它就可以给出你想要的结果。这一点和函数是一样的,于是大家就习惯上把它叫做函数。但其实它并不是一个函数,因为它是惰性的,什么叫惰性的呢?给大家看看

print(range(1,3))    # 如果它是函数,得到的结果是0,1,2,然而

image-20211109201203024

于是,大家恍然大悟,”它是迭代器“,一开始我也以为是,但是后面才知道,这家伙没那么简单,哪里不简单呢?我们来看看迭代器长啥样。比如迭代器zip

image-20211109201212576

并且种种表现也证明了它并不是一个迭代器,“迭代器是惰性的一次性可迭代对象”,也就是说,我们在迭代器是遍历一个元素就少一个,但是它不是,甚至,我们可以对它进行索引(jupyter notebook环境)

image-20211109201220789

那么,它到底是什么呢?如果实在要给它一个名字,可以称它为“懒序列”,也就是说,实际上它就是列表元组集合一类的东西,然而,它比较”懒“,那么什么叫懒呢?这里我需要讲一下。为了好理解,我用简单的例子比喻,我知道你们也不想看定义。

补充:

懒惰机制在计算机中就是说在为了缓解内存的压力,我们设置懒惰机制不要将计算的结果一次给出,而是在计算机使用者(可以是人也可以是其他机器)需要时再通过计算给出其需要的计算结果。现在再看看迭代器,实际上迭代器就是这样一个惰性机制。不会像列表这样的可迭代对象一次给出所有计算结果。range对象也有这样的特性。

2.基本语法

实际上range对象是什么并不是那么的那么的重要,而怎样用它才是我们最应该重点关注的。基本语法

这是它的使用说明,如果看不懂没有关系!看不懂才有我的用武之地

image-20211109202935269

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,代表取出规则是“取一个元素跳过一个元素再接着取

3.应用举例

简单知道range对象的语法以后,我们进行应用举例。

最常用组合—-for循环。不知道的请看我上一遍文章

插入链接

我们在上面已经讲到range对象是一个“懒序列”,那么通常我们需要将里面的元素取出来使用。因此,最常用的便是与for 循环配合使用。直接上例子。

1、stop指定范围结束,start默认为0,stop步长默认为1

for i in range(9):    # 此时9是stop,指定范围结束,start默认为0,stop步长默认为1
    print(i)

image-20211109205802985

2、指定start、stop,默认stop

for i in range(2,9):   
    print(i)

image-20211109210124940

3、指定stop,此时start和stop不能省略

for i in range(2,9,2):
    print(i)

image-20211109210316016

4、stop为负数,此时start可以大于stop,例如

for i in range(9,2,-2):   # 从9到2,步长为-2,没迭代一次增加-2,即下降2
    print(i)

image-20211109210714944

思考:如果我们执行以下代码,能得到什么?,还是报错?

x for i in range(9,2):   
    print(i)

单独使用:

1、独自打印

image-20211109211033971

2.索引

image-20211109211158776

思考:那么可以切片吗?如果可以,又会得到怎样的结果呢?

4.总结

1、range对象的使用和理解都不难,但是在python的使用中非常常用!

2、range对象既不是函数也不是迭代器,可以叫它“懒序列”

3、参数解释:start为范围开始,stop为范围结束,stop为步长

4、range对象经常和for循环配合使用

5、可以对range对象进行索引

好了,今天的内容就分享到这里,我们明天见!

如果对你有帮助,不要忘记分享给好朋友哦!关注我,防止错过更多内容!
也欢迎大家移步到翔宇的公众号“Python和数据分析”(下方有公众号卡片)阅读更多内容!

参考:(2条消息) python中的range对象_Python:range 对象并不是迭代器_weixin_39804335的博客-CSDN博客

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年3月7日 上午11:28
下一篇 2023年3月7日

相关推荐