range函数的使用

循环结构终于会出现了
这章讲完差不多读者可以实现大部分程序了
range()函数
用于生成一个整数序列

内置函数:前面不需要加任何前缀,可以直接使用的函数

创建range对象的三种方式
range(stop)
该函数的作用是创建一个从[0,stop)的整数列表,同时两个数之间的长度默认为1,即步长为1,注意stop<=0的时候,其返回值为空,不会创建

range(start, strop)
该函数时创建一个[start, stop)的整数列表,步长默认让然为1,同样这边的start必须小于stop否则不能创建一个有效的整数列表

range(start, stop, step)
那么自然的就知道该函数的作用是,创建一个[start, stop)的整数列表,步长为step,可以理解为该函数的作用就是创建一个等差数列

range函数的返回值是一个迭代器对象(C++中的STL出来了)
如果想要查看range返回值中的整数序列
借助列表list来实现
print(list(range(10))

range类型的有点,不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素(老数学带师了){推广后,可以发现,只要这个数列可以由通项表示,那么告知首项,范围,即可唯一确定该数列,这边的通项因为是等差数列,所以简化成由公差也就是步长来唯一确定}

in与not in判断整数序列中是否存在(不存在)指定的整数
example:

点击查看代码
r = range(0)
print(list(r))

r = range(19, 20)
print(list(r))

r = range(10, 21, 10)
print(list(r))
print(10 in list(r))
print(10 in r)
print(9 in r)
print(8 not in r)

在这边一定要知道的是,range返回的迭代器对象或者说range这个对象所占的内存是一样的,并不会因为range的范围里面的整数个数非常大而非常大,这是需要注意的地方,只有真正用到range的时候进行展开(貌似展开后对于内存的占用又是跟里面的整数个数成正相关了,网上查找,貌似存储的时候大家的内存占用都一样,但是使用的时候是会自己建立一个list来实现的)

posted @   banyanrong  阅读(1034)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示