【目录】
文章目录
- 1. range( )函数是什么?
- 2. 知识回顾-列表的切片
- 3. range( )函数的语法
- 3.1 range( )函数语法
- 3.2 参数说明
- 3.3 列表切片和range函数的区别
- 4. 实操练习
- 4.1 参数为一个正整数
- 4.2 参数为0
- 4.3 参数为一个负整数
- 4.4 有2个参数
- 4.5 有3个参数
- 4.6 步长为负数
- 5. list不能完全替代range
- 6. 课后练习
- 6.1 练习1
- 6.2 练习2
- 6.3 练习3
- 7. 总结
【正文】
1. range( )函数是什么?
range[reɪndʒ]:按一定的次数排列。
range的中文意思是按一定的次数排列。
【作用】
range( )函数:Python 内置的一个函数,用于生成一个数字序列。
2. 知识回顾-列表的切片
【列表切片取值语法】
列表名[star:end:step]
列表名[开始字符:结束字符:步长]
列表切片取值语法由4部分构成:
-
- 列表名。
-
- 英文中括号
[]
。
- 英文中括号
-
- 3个参数(star,end,step)。
-
- 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( )函数的语法
3.1 range( )函数语法
range(开始字符,结束字符,步长)
range( )函数由4部分组成:
-
- 函数名:
range
- 函数名:
-
- 英文圆括号括号:
( )
- 英文圆括号括号:
-
- 3个参数(star,end,step)。
-
- 3个参数之间用英文逗号
,
分隔。
- 3个参数之间用英文逗号
3.2 参数说明
-
- 参数
start
:表示起始的整数(包含该整数)。默认值为 0
。如果没有指定 start 参数,range 函数会从 0 开始生成数字序列。
- 参数
-
- 参数
end
:表示结束的整数(不包含该整数)。end参数是唯一一个没有默认值的参数。它表示生成的数字序列中的结束值,但不包含在序列中。必须指定 stop 参数的值。
- 参数
-
- 参数
step
:表示步长。默认值为 1
。如果没有指定 step 参数,range 函数会按照每次递增 1 的步长生成数字序列。如果省略,则默认为1,当省略该步长时,最后一个英文逗号也可以省略。
- 参数
3.3 列表切片和range函数的区别
列表切片用英文中括号[]
,range函数用英文圆括号()
。
列表切片的3个参数用英文冒号:
分隔。
range函数的3个参数用英文逗号,
分隔。
列表[star:end:step]
range(star,end,step)
【重点提示】
列表切片取值和range函数生成序列的范围都包括开始字符,不包括结束字符对应的值,简单记忆为含前不含后
。
【返回值】
range函数返回的是一个range
对象。
要查看range
对象的内容,可以这样做:
用list
函数将range对象转换成列表。
用tuple
函数将range对象转换成元组。
【温馨提示】
range函数不能直接生成列表或元组,必需利用list、tuple
函数将其转换成列表或元组。
4. 实操练习
4.1 参数为一个正整数
r = range(3) # 创建一个range 函数,将结果赋值给变量r
print(r) # 输出r,得到的是一个range对象
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组
【终端输出】
range(0, 3)
<class 'range'>
[0, 1, 2]
(0, 1, 2)
【参数解析】
这里range函数只有1个参数3
。
range函数有3个参数,但是只有end参数不能省略。
因此这里的3
会传递给参数end
。
star
参数取默认值0
。
end
参数取值为3
,输出范围不包括3
。
step
参数取默认值1
。
range(3) 等价于 range(0, 3, 1)。
【参数值如下】
start=0
end=3
step=1,即步长为1
【代码解析:返回值】
我们用type
函数查看数据类型,返回的是<class 'range'>
,即是一个range对象。
我们利用list
将其转换成列表,我们可以发现列表中的元素就是一个数学中的等差数列。
为了方便理解,我们可以认为range函数在list函数的作用下,创建的就是一个等差数列。
数列的公差就是步长。
4.2 参数为0
r = range(0) # 创建一个range 函数,将结果赋值给变量r
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组
【终端输出】
<class 'range'>
[]
()
【参数解析】
要重点关注range(0)
的返回值。
这里range函数只有1个参数0
。
range函数有3个参数,但是只有end参数不能省略。
因此这里的0
会传递给参数end
。
star
参数取默认值0
。
end
参数取值为0
。
step
参数取默认值1
。
range(0)
从0开始到0结束,即range对象为空。因此终端只会输出一个空列表或空元组。
4.3 参数为一个负整数
r = range(-3) # 创建一个range 函数,将结果赋值给变量r
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组
【终端输出】
<class 'range'>
[]
()
【参数解析】
star
参数取默认值0
。
end
参数取值为0
。
step
参数取默认值1
。
range(0)
和range(-3)
一样,返回的都是空列表或空元组。
在 range 函数中,如果传入的 end 参数小于等于 start 参数,并且步长 step 的符号与 start - stop 的符号相同,那么生成的序列将为空。
start = 0
end = -3
step = 1
end < start
step=0 符号为正
start-end=0-(-3)=3 符号为正
4.4 有2个参数
r = range(2,5) # 创建一个range 函数,将结果赋值给变量r
print(r) # 输出r
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
【终端输出】
range(2, 5)
<class 'range'>
[2, 3, 4]
【参数解析】
有2个参数的时候,step
取默认值1
。
start=2,从2开始,包含2
。
end=5,到5结束,不包含5
。
step=1,步长为1。
因此输出结果为2,3,4。
4.5 有3个参数
r = range(2,11,3) # 创建一个range 函数,将结果赋值给变量r
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组
【终端输出】
<class 'range'>
[2, 5, 8]
(2, 5, 8)
【参数解析】
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三个数。
4.6 步长为负数
r = range(15,0,-5) # 创建一个range 函数,将结果赋值给变量r
print(type(r)) # 用type函数查看r的数据类型
print(list(r)) # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组
【终端输出】
<class 'range'>
[15, 10, 5]
(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三个数。
5. 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个参数就可以完成。
6. 课后练习
6.1 练习1
使用 range 函数生成一个从 1 到 10(包括1和10)的数字序列,并计算这些数字的总和。
【代码示例】
# 使用 range 函数生成数字序列,并计算总和
sum = 0
for x in range(1, 11):
sum += x
print("总和为:", sum)
【终端输出】
总和为: 55
【代码解析】
-
sum = 0
创建一个变量 sum 并初始化为 0,用于存储总和的结果。 -
for x in range(1, 11):
使用 for 循环遍历从 1 到 10(包括 1 和 10)的数字序列。 -
sum += x:
在每次循环中,将当前的数字 x 加到 sum 变量中,实现累加操作。 -
print("总和为:", sum)
:在循环结束后,打印出计算得到的总和。
【执行过程】
- 初始时,sum 的值为 0。
- 进入循环,第一次迭代时 x 的值为 1,将其加到 sum 中,此时 sum 的值变为 1。
- 继续循环,依次迭代 x 的值为 2、3、4、5、6、7、8、9、10,每次都将其加到 sum 中。
- 循环结束后,sum 的值为从 1 到 10 的数字序列的总和,即 55。
- 最后,打印出 “总和为: 55”。
6.2 练习2
【len函数知识回顾】
len() 函数是一个内置函数,用于返回一个对象(如字符串、列表、元组等)的长度或元素个数。
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length) # 输出:5
【终端输出】
5
【目标任务】
用range函数来遍历一个列表,依次输出列表中的元素。
【代码示例】
str_list = ["当归", "人参", "黄芪", "红枣", "枸杞", "天麻", "山楂"] # 新建一个str列表
for i in range(len(str_list)):
print(str_list[i], end=",")
当归,人参,黄芪,红枣,枸杞,天麻,山楂,
【代码解析】
str_list = [“当归”, “人参”, “黄芪”, “红枣”, “枸杞”, “天麻”, “山楂”] # 新建一个str列表
- 创建一个名为
str_list
的字符串列表,其中包含了几个中药的名称。
for i in range(len(str_list)):
- 使用 for 循环遍历 str_list 列表中的每一个元素。
- range(len(str_list)) 返回一个从 0 到
len(str_list)-1
的数字序列,作为循环的索引。 len(str_list)
的值为7
。for i in range(len(str_list))
等同与于for i in range(7)
print(str_list[i], end=",")
- 在每次循环中,通过索引 i 获取到 str_list 列表中的对应元素,并将其打印出来。
end=","
参数指定打印结束后的字符为英文逗号。
【执行过程】
- 循环开始,初始时 i 的值为 0。
- 第一次循环中,通过索引 0 获取到 str_list 中的第一个元素 “当归”,然后将其打印出来,并在末尾添加逗号。
- 继续循环,依次迭代 i 的值为 1、2、3、4、5、6,每次都通过索引获取到对应位置的字符串,并打印出来,并在末尾添加逗号。
- 当 i 的值达到 len(str_list)-1(即 6)时,循环结束。
6.3 练习3
用range输出5次下面的语句:
安迪python学习笔记
【代码示例】
for i in range(5):
print('安迪python学习笔记')
【终端输出】
安迪python学习笔记
安迪python学习笔记
安迪python学习笔记
安迪python学习笔记
安迪python学习笔记
7. 总结
【代码总结】
print(list(range(0))) # 返回一个空列表
print(list(range(-3))) # 返回一个空列表
print(list(range(3))) # 返回列表[0,1,2]
print(list(range(2,5))) # 返回列表[2,3,4]
print(list(range(2,11,3))) # 返回列表[2,5,8]
print(list(range(15,0,-5))) # 返回列表[15,10,5]
【终端输出】
[]
[]
[0, 1, 2]
[2, 3, 4]
[2, 5, 8]
[15, 10, 5]
range函数如果只有一个参数,且这个参数的值为0或负数时range对象为空,用list函数输出时返回一个空列表。
【图片总结】