python 将列表值赋予函数_Python下的数值列表 - range(x,y,z)函数

本文讨论Python下的数值列表 - range(x,y,z)函数的应用,并分析其计数过程.

本文节选自作者的《Python编程基础及应用》视频教程。

Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
7d3cad453960d05b6e4d98409466ff6a.png

1. 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

e8a4aa3775d84fc11d776361bb0f622f.png

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]

a9beaa8f559bac18bbf23918ddb2e2fb.png

3 理解range计数过程

读者或许对range(x,y,z)的输出结果感到疑惑,看看下面这个流程图。

e88d14f227b46480deee639c924b9c97.png

现以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,相应流程图如下:

fdb8e7ecde5ca69ca3d907d53d9ccf5a.png

作者试了试如下代码:

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编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
7d3cad453960d05b6e4d98409466ff6a.png
版权声明 本文 可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。 本文 不可以以纸质出版为目的进行改编、摘抄。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值