![](https://bookbk.img.zhangyue01.com/group61/M00/6C/A2/CmQUOF-OvTOECtpcAAAAANQ5foY542013107.png?v=RgTZneOn&t=CmQUOF-OvTM.)
2.5 range
1.range的本质
range是Python中的一个不可变序列。
使用 range 可以生成一个数值序列。它的本质是生成一个序列,以便执行特定次数的循环,这是它的一般用途。尽管它是一个一般的函数,但它也是有类型的,它的类型是“range”。
比如我们想在屏幕上输出5次“Hello world!”,可以这样来编写代码。
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/F0/CmQUOV-OvTKEf-nnAAAAAL4rSME025250532.jpg?v=cXTvLgDO&t=CmQUOV-OvTI.)
range(5)是一个函数,生成一个包含5个元素的序列,这5个元素是从0到4,注意不包含5。
如果要使用遍历过程中变量i的值,可以这样使用:
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/A2/CmQUOF-OvTKEJXFkAAAAADe0Ero019297482.jpg?v=c9DFE93q&t=CmQUOF-OvTI.)
这是range()函数的一般用途,但它本身也是有类型的。如果要生成一个包含5个元素的序列,可以通过以下的代码来实现。
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/F0/CmQUOV-OvTKEZEUZAAAAAAdWOU4073405650.jpg?v=V9OpiYjO&t=CmQUOV-OvTI.)
range 函数的结果虽然不像列表和元组那么直观,但仍然可以检测它的类型。它是range类型的,range类型属于序列的不可变类型。
与列表和元组一样,可以通过rang的下标来访问它的元素的值,但它不支持原位改变。
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/A2/CmQUOF-OvTKEE59LAAAAAKBibdk076472611.jpg?v=NOwC9AL_&t=CmQUOF-OvTI.)
2.range的声明
range的声明有3种方式(见表2-11)。
表2-11 range的声明
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/F0/CmQUOV-OvTKEOB_JAAAAAD8tSco330905417.jpg?v=qBfqcGqA&t=CmQUOV-OvTI.)
![](https://bookbk.img.zhangyue01.com/group61/M00/6C/F0/CmQUOV-OvTKELVk1AAAAANFCieA196400707.jpg?v=2iB4oye9&t=CmQUOV-OvTI.)
“range(1,10,3)”得到的是1至9中间的3个值,即从1开始,按步长3递增,直到10,但不包括10。
3.range支持序列的通用操作
range 比较简单,尽管它一般用在循环语句中,但它确实是序列中的一种,存在自己的类型,虽然它不支持像列表一样的原位操作,但序列的通用操作都适用于它,如判断元素是否在序列之内、求最大最小值、求长度、检索某一个元素的位置、统计元素出现的次数,等等。