第十三章、while和for循环

while语句,提供了编写通用循环的一种方法;for语句,用它来遍历序列对象内的元素,并对每个元素运行一个代码块。

while循环

while语句是Python语言中最通用的迭代结构。简而言之,只要顶端测试一直计算到真值,就会重复执行一个语句块(通常有缩进)。

1、一般格式:

while语句最完整的输出格式是:首行以及测试表达式、有一列或多列缩进语句的主体以及一个可选的else部分(控制权离开循环而又没有碰到break语句时会执行)。

2、例子:

3、break、continue、pass和循环else:

break:跳出最近所在的循环(跳过整个循环语句)。

continue:跳到最近所在循环的开头处(来到循环的首行)。

pass:什么事也不做,只是空占位语句。

循环else块:只有当循环正常离开时才会执行(也就是没有碰到break语句)。

4、一般循环格式:

break和continue可以出现在while(或for)循环主体的任何地方,但通常会进一步嵌套在if语句中,根据某些条件来采取对应的操作。

①、pass:

pass语句是无运算的占位语句,当语法需要语句并且还没有任何实用的语句可写时,可以使用它。

②、continue:

continue语句会立即跳到循环的顶端。

③、break:

break语句会立刻离开循环。

④、循环else:

和循环else子句结合时,break语句通常可以忽略其他语言中所需的搜索状态标志位。

⑤、关于循环else分句的更多内容:

简而言之,循环else分句提供了常见的编写代码的明确语法:这是编写代码的结构,让你捕捉循环的“另一条”出路,而不是通过设定和检查标志位或条件。

for循环

for循环在Python中是一个通用的序列迭代器:可以遍历任何有序的序列对象内的元素。

1、一般格式:

Python for循环的首行定义了一个赋值目标(或一些目标),以及你想遍历的对象。首行后面是你想重复的语句块(一般都有缩进)。

2、例子:

①、基本应用:

for循环可以遍历任何一种序列对象。

②、其他数据类型:

任何序列都适用for循环,因它是通用的工具。

③、在for循环中的元组赋值:

如果迭代元组序列,循环目标本身实际上可以是目标元组。

④、Python3.0在for循环中扩展的序列赋值:

由于for循环中的循环变量真的可以是任何赋值目标,在这里,我们也可以使用Python3.0的扩展序列解包赋值语法,来提取序列中的序列的元素和部分。

⑤、嵌套for循环:

编写循环的技巧

for循环包括多数计数器的循环。

Python提供了两个内置函数,在for循环内定制迭代:

①、内置range函数返回一系列连续增加的整数,可以作为for中的索引。

②、内置zip函数返回并行元素的元组的列表,可用于在for循环内遍历数个序列。

1、循环计数器:while和range:

range函数是通用的工具,可用在各种环境下。一个参数时,range会产生从零算起的整数列表,但其中不包括该参数的值。如果传进两个参数,第一个将视为下边界。第三个选用参数可以提供步进值。

2、非完备遍历:range和分片:

使用range唯一的真正优点是——它没有复制字符串,并且不会在Python3.0中创建一个列表,对于很大的字符串来说,这会节省内存。

3、修改列表:range:

可以使用range和for的组合的常见场合就是在循环中遍历列表时并对其进行修改。

4、并行遍历:zip和map:

内置的zip函数让我们使用for循环来并行使用多个序列。

①、Python2.6中的map等价形式:

在Python2.X中,相关(较旧)的内置map函数,用类似方式把序列的元素配对起来,但是如果参数长度不同,则会为较短的序列用None补齐(而不是按照最短的长度截断)。Python3.0不再支持该函数。

②、使用zip构造字典:

将列表变成字典的一种做法就是将这些字符串zip起来,并通过for循环并行步进处理。在Python2.2和后续版本中,你可以完全跳过for循环,直接把zip过的键和值列表传给内置的dict构造函数。

5、产生偏移和元素:enumerate:

enumerate函数返回一个生成器对象:这中对象支持下一章将要学习的迭代协议,本书下一部分会再深入讨论迭代协议。简而言之,这个对象有一个__next__方法,由下一个内置函数调用它,并且循环中每次迭代的时候它会返回一个(index,value)的元组。

本章小结

在本章中,我们探索了Python的循环语句以及一些和Python循环有关的概念。我们深入讨论while和for循环语句,学习其相关的else分句。我们也研究过break和continue语句,而它们只在循环中才有意义,并且介绍了几个再for循环中常用的内置工具,包括range、zip、map和enumerate(尽管它们在Python3.0中的角色是迭代器,并且下一章才会正式介绍迭代器的概念)。


你可能感兴趣的:(第十三章、while和for循环)