本文讨论Python下的数值列表 - range(x,y,z)函数的应用,并分析其计数过程.
本文节选自作者的《Python编程基础及应用》视频教程。
Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com1. range(x)、range(x,y)
print("output of range(5):")
for i in range(5):
print(i)
print("output of range(2,5):")
for x in range(2,5):
print(x)
执行结果:
output of range(5):
0
1
2
3
4
output of range(2,5):
2
3
4
range(x,y)在解释器内部并不是一个严格意义上的列表,而是一个称为range的不常用的数据类型。如下述代码所示:
#rangelist2.py
x = range(5)
print(x[2])
print(x)
print(type(x))
执行结果:
2
range(0, 5)
<class 'range'>
如果真的需要把range转换成列表,可以通过类型转换实现:
#range2list.py
x = range(5)
x = list(x)
print(type(x),x)
执行结果:
<class 'list'> [0, 1, 2, 3, 4]
2. range(x,y,z)
更复杂的range形式:
#fours.py
fours = list(range(0,17,4))
print(fours)
执行结果:
[0, 4, 8, 12, 16]
3 理解range计数过程
读者或许对range(x,y,z)的输出结果感到疑惑,看看下面这个流程图。
现以range(0,17,4)为例,依上述流程图说明输出集合为什么是[0,4,8,12,16]。首先,计数取值x=0,然后开始循环:
- 0 < 17,输出0;
- 计数 = 0 + 4 = 4;
- 4 < 17,输出4;
- 计数 = 4 + 4 = 8;
- 8 < 17, 输出8;
- 计数 = 8 + 4 = 12;
- 12 < 17, 输出12;
- 计数 = 12 + 4 = 16;
- 16 < 17, 输出16;
- 16 + 4 = 20;
- 20 < 17不满足,循环结束。
如果你有C/C++经验,下述代码更容易描述range(x,y,z)的计数过程,事实上,Python的解释器就是用C/C++编写的。
for (int i=x;i<y;i+=z){
output(i);
}
上述range(x,y,z),如果z<0,相应流程图如下:
作者试了试如下代码:
numbers = list(range(9,2,-2))
print(numbers)
执行结果:
[9, 7, 5, 3]
该你了,请依上述流程图,人肉执行range(9,2,-2)的计数过程,验证上述输出。
如果你有C/C++经验,下面的代码能更容易地解释z小于0时range(9,2,-2)的计数过程:
for (int i=x;i>y;i+=z){
output(i);
}
本文节选自作者的《Python编程基础及应用》视频教程。想完整零基础学习Python程序设计,欢迎使用此免费视频教程。
Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com版权声明 本文 可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。 本文 不可以以纸质出版为目的进行改编、摘抄。