安迪Python

V1

2022/12/07阅读:36主题:默认主题

42. range函数—生成器函数

42. range函数—生成器函数

1. 什么是range( )函数

range[reɪndʒ]:按一定的次数排列。

range的中文意思是按一定的次数排列。

range( )函数:Python中的生成器函数。

range( )函数在Python中的作用是生成一个新的range对象。

【温馨提示】

什么是生成器函数、什么是对象就是Python中的一个概念,就是一个定义,初学不用过多纠结。

初学者重点掌握range函数的语法即可。

什么是对象,后面的内容会讲。

2. 回顾列表切片的语法

列表[star:end:step]

列表[开始字符:结束字符:步长]

列表切片取值语法由4部分构成:

  1. 列表名。

  2. 英文中括号。

  3. 3个参数。

  4. 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个字符。

42-1列表切片 )

3. range( )函数的语法

【列表切片和range函数的区别】

列表切片用英文中括号[],range函数用英文圆括号()

列表切片的3个参数用英文冒号:分隔。

range函数的3个参数用英文逗号,分隔。

列表[star:end:step]

range(star,end,step)

【range( )函数的语法如下】

range(开始字符,结束字符,步长)

range( )函数由4部分组成:

  1. 函数名:range

  2. 英文小括号:( )

  3. 3个参数

  4. 3个参数之间用英文逗号,分隔

42-2range函数语法
42-2range函数语法

【参数说明】

  1. 参数start:表示起始的整数(包含该整数),如果不指定,则默认为0

  2. 参数end:表示结束的整数(不包含该整数),不能省略。

  3. 参数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

42-3range(3)
42-3range(3)

【代码解析:返回值】

我们用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. 总结

42-4range函数总结
42-4range函数总结

分类:

后端

标签:

Python

作者介绍

安迪Python
V1