![Python程序设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/842/25449842/b_25449842.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.5 range
1.range的本质
range是Python中的一个不可变序列。
使用 range 可以生成一个数值序列。它的本质是生成一个序列,以便执行特定次数的循环,这是它的一般用途。尽管它是一个一般的函数,但它也是有类型的,它的类型是“range”。
比如我们想在屏幕上输出5次“Hello world!”,可以这样来编写代码。
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_1.jpg?sign=1739141150-SeZWGkZrbKDkm5E7mDyRRHv6dI4ETe5t-0-251e501ba76fbff6521066062a3f3d3c)
range(5)是一个函数,生成一个包含5个元素的序列,这5个元素是从0到4,注意不包含5。
如果要使用遍历过程中变量i的值,可以这样使用:
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_2.jpg?sign=1739141150-sMFEvCG0QNRLsuR7ylcghfrotKZx4mgt-0-51da7deb230cd6e3bb8badfa55961a74)
这是range()函数的一般用途,但它本身也是有类型的。如果要生成一个包含5个元素的序列,可以通过以下的代码来实现。
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_3.jpg?sign=1739141150-LQUyyBzIlqLvtCwZMVJWnT4o7hZ1Omrv-0-ee7e43067ad779a910e726c8da3e421a)
range 函数的结果虽然不像列表和元组那么直观,但仍然可以检测它的类型。它是range类型的,range类型属于序列的不可变类型。
与列表和元组一样,可以通过rang的下标来访问它的元素的值,但它不支持原位改变。
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_4.jpg?sign=1739141150-BW8PKKMdhU9zj727McDd316RAUwzTZnW-0-35ef4766954be45fbd9914820d112ab6)
2.range的声明
range的声明有3种方式(见表2-11)。
表2-11 range的声明
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/83_1.jpg?sign=1739141150-jrcNamP4yEWXZhUIbxGz2eURxBVtqs9Q-0-fdb363698b7ee9358547fc40dece33f4)
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/83_2.jpg?sign=1739141150-GeKnzEAcxW3ODV7SJ3WpsK5lYfKJCYMB-0-790c1418890d77cd6d396227d598fd54)
“range(1,10,3)”得到的是1至9中间的3个值,即从1开始,按步长3递增,直到10,但不包括10。
3.range支持序列的通用操作
range 比较简单,尽管它一般用在循环语句中,但它确实是序列中的一种,存在自己的类型,虽然它不支持像列表一样的原位操作,但序列的通用操作都适用于它,如判断元素是否在序列之内、求最大最小值、求长度、检索某一个元素的位置、统计元素出现的次数,等等。