while循环是检测某一个条件,如果条件为真就执行while命令内的代码块。
最完整的格式是:首行以及测试表达式,有一列或者多列拥有相同代码缩进的主体,以及一个可选的else部分。
while :
else: #else部分是循环语句在没有break语句执行的情况下,离开循环时执行
Python并没有其他语句中所谓的do….until循环语句。需要达到这种效果,可以借助break语句。
语句 | 说明 | 备注 |
---|---|---|
break | 跳出最近所在的循环 | 跳过整个循环语句 |
continue | 直接进行循环语句的下次迭代 | 跳到循环语句的开头处,继续执行循环 |
pass | 什么也不做 | 空语句的占位符 |
循环else | 当循环正常结束,执行else代码块 | 正常结束即没有执行到break语句;没有执行循环主体语句时,也会执行else部分 |
pass语句通常用于为复合语句或函数编写一个空的主体,复合语句或函数在编程后面才实现时,为了程序不产生语法或其它错误,就用pass来跳过改语句或函数的执行,如下:
def fun(): pass while
: pass
for循环是Python中很常用的一个循环,是一个通用的序列迭代器:可以用于迭代任何有序的序列对象内的元素。
for in <object>: #每一次迭代就像游标一样,取出object中的一个元素,进入循环主体进行处理。
else:
#这里的else模块与while的else模块执行规则一致,没有碰到break语句时执行。
for循环包括多数计数器式的循环。一般而言,for比while容易写,执行速度也比较快。在某些情况下,你需要某种特定的方式来进行迭代,就可以使用python提供的内置函数:
>>> range(6)
range(0, 6)
>>> list(range(6))
[0, 1, 2, 3, 4, 5]
>>> list(range(2,5)) #第一个与第二个元素,提供产生范围的上下边界
[2, 3, 4]
>>> list(range(2,5,2))
[2, 4]
>>> list(range(2,10,2)) #第三个参数提供步长
[2, 4, 6, 8]
>>>
内置函数range允许我们在for循环中以非完备的方式遍历序列。内置的zip函数也让我们使用for循环来并行使用多个序列。
>>> l1=[1,2,3,4,5]
>>> l2=[6,7,8,9,0]
>>> zip(l1,l2)
0x7f8f149fe7c8>
>>> list(zip(l1,l2))
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 0)]
>>> l2=[6,7,8,9] #注意到当l2列表少一个元素时,zip会将长的列表“裁剪”与短列表一致
>>> list(zip(l1,l2))
[(1, 6), (2, 7), (3, 8), (4, 9)]
>>> for (a,b) in zip(l1,l2): #zip函数的返回对象,可以直接用于循环迭代。
... print(a,b)
...
1 6
2 7
3 8
4 9
>>>
map会带一个函数和一个序列,将序列中的每一个元素都应用于这个函数,并将函数结果返回。
>>> map(int,'123456')
<map object at 0x7f8f1730f588>
>>> list(map(int,'123456'))
[1, 2, 3, 4, 5, 6]
>>>
用zip函数可以巧妙的构造字典:
>>> l1
[1, 2, 3, 4, 5]
>>> l2
[6, 7, 8, 9]
>>> for (x,y) in zip(l1,l2): D[x]=y #用键值方式构建字典时,必须先声明一个空字典
...
Traceback (most recent call last):
File "" , line 1, in
NameError: name 'D' is not defined
>>> D={}
>>> for (x,y) in zip(l1,l2): D[x]=y
...
>>> D
{1: 6, 2: 7, 3: 8, 4: 9}
>>> D2=dict(zip(l1,l2)) #这是一种更简单的方法,对dict调用时,实际上得到的是类似列表到字典的转换
>>> D2
{1: 6, 2: 7, 3: 8, 4: 9}
>>>
产生偏移和元素:enumerate
有些循环,我们需要得到该次迭代在循环体中的偏移量。
>>> for (x,y) in enumerate("abcdefg"): #enumerate返回一个生成器对象,这种对象支持迭代协议
... print("index:",x," ",y) #简而言之,这个对象会有一个__next__方法,由一个内置函数调用它
...
index: 0 a
index: 1 b
index: 2 c
index: 3 d
index: 4 e
index: 5 f
index: 6 g
>>>
在Python中,循环是很常见的复合语句,本章讨论了循环语句,以及循环语句的使用函数与使用技巧。while语句是一个通用的循环语句,for循环设计用来在一个序列中遍历各个元素(序列需要是真正可迭代的)。zip函数用来循环并行两个列表。range函数用来生成连续值的,可以用在for语句中进行循环控制。