自学Python-语句(3)
循环语句
简单的for循环
for循环的语法和if差不多,条件需要冒号,语句块需要四个空格的缩进:
1 |
|
这个for循环是怎么工作的呢?
- hello这个变量引用的是”world”这个str类型的数据
- 变量 i 通过hello找到它所引用的对象”world”,因为str类型的数据属于序列类型,能够进行索引,于是就按照索引顺序,从第一字符开始,依次获得该字符的引用。
- 当 i=”w”的时候,执行print i,打印出了字母w,结束之后循环第二次,让 i=”e”,然后执行print i,打印出字母e,如此循环下去,一直到最后一个字符被打印出来,循环自动结束。
因为可以也通过使用索引(偏移量),得到序列对象的某个元素。所以,还可以通过下面的循环方式实现同样效果:
1 |
|
其工作方式是:
- len(a)得到hello引用的字符串的长度,为5
- range(len(hello),就是range(5),也就是[0, 1, 2, 3, 4],对应这”world”每个字母索引,也可以称之为偏移量。这里应用了一个新的函数range(),关于它的用法,继续阅读,就能看到了。
- for i in range(len(hello)),就相当于for i in [0,1,2,3,4],让i依次等于list中的各个值。当i=0时,打印hello[0],也就是第一个字符。然后顺序循环下去,直到最后一个i=4为止。
- 这种语法由于我也第一次接触,所以直接用的 《零基础自学python》的原文
while
while比较简单就不多说了,可以通过下面的例子来了解
1 |
|
这个例子是直接抄的原文的,通过这个例子应该对while有了大概的了解:
- 只要条件成立就一直运行。
- 遇到break,就直接跳出循环。
- 遇到continue,就从头开始执行。
内建函数range(start,stop[, step])
一般形式是range(start, stop[, step])
关于range()函数有以下主要注意的地方:
- 这个函数可以创建一个数字元素组成的列表。
- 这个函数最常用于for循环。
- 函数的参数必须是整数,默认从0开始。返回值是类似[start, start + step, start + 2*step, …]的列表。
- step默认值是1。如果不写,就是按照此值。
- 如果step是正数,返回list的最最后的值不包含stop值,即start+istep这个值小于stop;如果step是负数,start+istep的值大于stop。
- step不能等于零,如果等于零,就报错。
参数的含义:
- start:开始数值,默认为0,也就是如果不写这项,就是认为start=0
- stop:结束的数值,必须要写的。
- step:变化的步长,默认是1,也就是不写,就是认为步长为1。坚决不能为0
1 |
|
如果结束值是负值,那么步进也需要是负值:
1 |
|
掌握了range()函数以后,我们可以写一个例程:
- 求100以内能被3整除的正整数
1
2#以第一个能被3整除的数开始,步进为3就可以很快的得到
range(3,100,3)
能够用来for的对象
所有的序列类型对象,都能够用for来循环。比如
1 |
|
- 值得注意的是字典获取的是key的值
并行迭代
计算两个列表a = [1,2,3,4,5], b = [9,8,7,6,5]的和,这就是并行迭代
我们可以这么做:
1 |
|
python有更好的方法实现这一功能,这就是zip()函数
zip()
函数原型是:
- zip(seq1 [, seq2 […]])
seq1, seq2分别代表了序列类型的数据,我们可以试一下这个函数
1 |
|
如果两个序列长度不同则以最短的为准
1 |
|
如果参数只有一个序列是会是以下的样子
1 |
|
让我们用zip()来解决最开始的问题
- 计算两个列表a = [1,2,3,4,5], b = [9,8,7,6,5]的和
1
2
3
4
5
6a = [1,2,3,4,5]
b = [9,8,7,6,5]
c = []
for x,y in zip(a,b):
c.append(x+y)
print c
list解析
先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来
1 |
|
python其实还可以这么做
1 |
|
在高级一点去除列表中字符串的前后空格
1 |
|
自学Python-语句(3)
https://carl-5535.github.io/2020/11/10/自学python/自学Python-语句-3/