![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=1739332345-u4flFAKWqcveNzxGv363LbFCM25dI4XJ-0-86d58cb94765a32ad9825d4a78194313)
range(5)是一个函数,生成一个包含5个元素的序列,这5个元素是从0到4,注意不包含5。
如果要使用遍历过程中变量i的值,可以这样使用:
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_2.jpg?sign=1739332345-7FxTUwhcBjUTWEjaRQMTgO99MC9pxzWC-0-b1d610ff45030847f3951672d2806c79)
这是range()函数的一般用途,但它本身也是有类型的。如果要生成一个包含5个元素的序列,可以通过以下的代码来实现。
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_3.jpg?sign=1739332345-5ATkp789yDO5Je5142PNfYAm8GR0QgxI-0-f432416f7ec50ddb62ec4193fcaab806)
range 函数的结果虽然不像列表和元组那么直观,但仍然可以检测它的类型。它是range类型的,range类型属于序列的不可变类型。
与列表和元组一样,可以通过rang的下标来访问它的元素的值,但它不支持原位改变。
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/82_4.jpg?sign=1739332345-6BZGs3nzMDqwJRYnWPfbN0qzqFMndKK1-0-34a7330dbf7534202af0e73fe4651005)
2.range的声明
range的声明有3种方式(见表2-11)。
表2-11 range的声明
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/83_1.jpg?sign=1739332345-ojSoW9pmTdT1gQRiAcMCtkZ4wsjdg6PR-0-3e6cd5292d24391ba2198a885cf1f497)
![](https://epubservercos.yuewen.com/ED6D45/13898202805418106/epubprivate/OEBPS/Images/83_2.jpg?sign=1739332345-Lw83haZemOVbf7CcEP8wFfYgNuSfFDGD-0-0a1c28d57b48948c18699f26e6de8ec8)
“range(1,10,3)”得到的是1至9中间的3个值,即从1开始,按步长3递增,直到10,但不包括10。
3.range支持序列的通用操作
range 比较简单,尽管它一般用在循环语句中,但它确实是序列中的一种,存在自己的类型,虽然它不支持像列表一样的原位操作,但序列的通用操作都适用于它,如判断元素是否在序列之内、求最大最小值、求长度、检索某一个元素的位置、统计元素出现的次数,等等。