Python range函数之生成器函数的示例
作者:安迪python学习笔记
range函数—生成器函数
1. 什么是range( )函数
range[reɪndʒ]:按一定的次数排列。
range的中文意思是按一定的次数排列。
range( )函数:Python中的生成器函数。
range( )函数在Python中的作用是生成一个新的range对象。
【温馨提示】
什么是生成器函数、什么是对象就是Python中的一个概念,就是一个定义,初学不用过多纠结。
初学者重点掌握range函数的语法即可。
什么是对象,后面的内容会讲。
2. 回顾列表切片的语法
列表[star:end:step]
列表[开始字符:结束字符:步长]
列表切片取值语法由4部分构成:
- 列表名。
- 英文中括号。
- 3个参数。
- 3个参数之间用英文冒号分隔。
# 新建一个str列表 str_list = ["当归", "人参", "黄芪", "红枣", "枸杞", "天麻", "山楂"] # 用切片从列表中取值 print(str_list[0:4:2]) # type函数查看列表切片取值的数据类型 print("列表切片取值得到的数据类型仍然是列表:", type(str_list[0:4:2]))
【终端输出】
['当归', '黄芪']
列表切片取值得到的数据类型仍然是列表: <class 'list'>
【0:4:2代码解析】
start=0即开始元素的索引为0,索引0对应列表的第1个元素,即元素当归
。
end=4即结束元素的索引为4,索引4对应列表的第5个元素,即元素枸杞
注意切片的语法:含前不含后
,即含开始元素,不含结束元素枸杞
。
step=2即步长为2,步长为2可以理解成一次性向前走2步,那就是要跳过1个字符。
3. range( )函数的语法
【列表切片和range函数的区别】
列表切片用英文中括号[]
,range函数用英文圆括号()
。
列表切片的3个参数用英文冒号:
分隔。
range函数的3个参数用英文逗号,
分隔。
列表[star:end:step]
range(star,end,step)
【range( )函数的语法如下】
range(开始字符,结束字符,步长)
range( )函数由4部分组成:
- 函数名:
range
- 英文小括号:
( )
- 3个参数
- 3个参数之间用英文逗号
,
分隔
【参数说明】
- 参数start:表示起始的整数(包含该整数),如果不指定,则默认为
0
。 - 参数end:表示结束的整数(不包含该整数),不能省略。
- 参数step:表示步长,即两个数之间的间隔。如果省略,则默认为1,当省略该步长时,最后一个英文逗号也可以省略。
【重点提示】
切片和range函数都包括开始字符,不包括结束字符,简单记忆为含前不含后
。
【返回值】
range函数返回的是一个range对象。
我们可以利用list函数将range对象转换成列表。
我们可以利用tuple函数将range对象转换成元组。
【温馨提示】
range函数不能直接生成列表或元组,必需利用list、tuple函数将其转换成列表或元组。
3. range函数实操
3.1 只有1个参数
# 创建一个range 函数,将结果赋值给变量r r = range(3) # 输出r print(r) # 用type函数查看r的数据类型 print(type(r)) # 用list函数将range对象转换为列表 print(list(r)) # 用tuple函数将range对象转换为元组 print(tuple(r))
【终端输出】
range(0, 3)
<class 'range'>
[0, 1, 2]
(0, 1, 2)
【range(3)代码解析】
这里只有1个参数3
。
只有1个参数表示从整数0开始,步长为1。
start=0
end=3
step=1,即步长为1
【代码解析:返回值】
我们用type函数查看数据类型,返回的是<class 'range'>
,即是一个range对象。
我们利用list将其转换成列表,我们可以发现列表中的元素就是一个数学中的等差数列。
为了方便理解,我们可以认为range函数在list函数的作用下,创建的就是一个等差数列。
数列的公差就是步长。
3.2 有2个参数
# 创建一个range 函数,将结果赋值给变量r r = range(2,5) # 输出r print(r) # 用type函数查看r的数据类型 print(type(r)) # 用list函数将range对象转换为列表 print(list(r))
【终端输出】
range(2, 5)
<class 'range'>
[2, 3, 4]
【range(2,5)代码解析】
start=2,从2开始,包含2。
end=5,到5结束,不包含5。
step=1,步长为1。
因此输出结果为2,3,4。
3.3 有3个参数
# 创建一个range 函数,将结果赋值给变量r r = range(2,11,3) # 输出r print(r) # 用type函数查看r的数据类型 print(type(r)) # 用list函数将range对象转换为列表 print(list(r))
【终端输出】
range(2, 11, 3)
<class 'range'>
[2, 5, 8]
【range(2,11,3)代码解析】
start=2,从2开始,包含2。
end=11,到11结束,不包含11。
step=3,步长为3,也可以理解为公差为3的等差数列。
第1个数为2。
第2个数为2+3=5。
第3个数为5+3=8。
第4个数为8+3=11。(不包含)
因此输出列表中有2,5,8三个数。
3.4 步长为负数
# 创建一个range 函数,将结果赋值给变量r r = range(15,0,-5) # 输出r print(r) # 用type函数查看r的数据类型 print(type(r)) # 用list函数将range对象转换为列表 print(list(r))
【终端输出】
range(15, 0, -5)
<class 'range'>
[15, 10, 5]
【range(15,0,-5)代码解析】
start=15,从15开始,包含15。
end=0,到0结束,不包含0。
step=-5,步长为-5,也可以理解为公差为-5的等差数列。
第1个数为15。
第2个数为15-5=10。
第3个数为10-5=5。
第4个数为5-5=0。(不包含)
因此输出列表中有15,10,5三个数。
4. list不能完全替代range
range函数和list函数最终都能生成一个列表,但两个函数各有优缺点。
# 创建一个整数列表 int_list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] print(int_list) r=range(20) print(list(r))
【终端输出】
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
观察上面的代码,我们发现用range函数创建一个有规律的整数列表更为便捷。
list函数需要写20个元素,但range函数最多写3个参数就可以完成。
5. 总结
到此这篇关于Python range函数—生成器函数的文章就介绍到这了,更多相关Python range函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!