廖雪峰Python教程知识点归纳(5):循环
本文若要转载请注明出处:https://www.cnblogs.com/cynthius-phi/p/15216982.html
本文整理自:https://www.liaoxuefeng.com/wiki/1016959663602400/1017100774566304
循环的意义
循环的意义在于,让计算机重复地执行有规律的任务。如计算1+2+...+100。
第一种循环:for循环
Python的for循环(for loop)用于将一个可迭代对象(iterable)中的元素按一定的顺序迭代出来。格式:
for <item> in <iterable>: [...]
其中<item>用来表示每一轮循环被迭代出来的元素,<iterable>表示要被迭代的可迭代对象。
注意<iterable>后面有一个“:”,这一点与C系列语言不同。
注意循环体(即“...”)内容需要缩进(indent(ation))。与C系列语言不同,Python的缩进是有语义上的意义的,表示一个特定的代码块。
举例:
>>> names = ['Adam', 'Bob', 'Tracy'] >>> for name in names: ... print(name) ... Adam Bob Tracy
range()
* 这一小节中,有部分内容是我个人补充的。
Python的range()函数可以很方便地生成一个有序的整数序列。比如:
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range()虽然返回一个有序序列,但它的类型并非list或tuple,而是range。要转化为list或tuple,需要(像上面这样)强制转换。
range()的语法有下面几种:
range(<stop>) range(<start>, <stop>) range(<start>, <stop>, <step>)
其中 <start> 表示开始值,<stop> 表示终止值,<step>表示相邻两个整数间的差值。range()生成的序列即为区间 [<start>, <stop>) 所包含的整数,即从<start>开始、于<stop>终止,但不包含<stop>。
如果只有1个参数,则该参数表示 <stop>,且<start> = 0,<step> = 1;
如果只有2个参数,则两个参数分别表示 <start> 和 <stop>,而 <step> = 1。
因为 range() 返回的是可迭代对象,所以可以直接充当for循环中in后面的成分。range() 也常常被用在for循环中,因为经常有迭代一系列整数的需求,而要实现这一点,用 range() 是最简单的。比如:
(打印区间 [0, 10) 内的所有整数)
>>> for i in range(10): ... print(i) ... 0 1 2 3 4 5 6 7 8 9
(计算 1+2+...+100)
>>> s = 0 >>> for i in range(101): ... s += i ... >>> s 5050
就像C系列语言一样,Python允许把 var = var op val 简写为 var op= val,其中 op 为 +、-、*、/、//、%。如 i = i + 1 可以写作 i += 1,n = n * 2 可以写作 n *= 2。
补充:enumerate()
* 这一小节完全是我个人补充的。
Python的for循环用来迭代一个序列中的元素。假定我们要对一个list使用循环,但有时,我们除了要该list的元素,还要每个元素对应的索引,怎么办?
诚然,我们可以这么做:
i = 0 for i in range(len(L)): print(i, L[i])
或这么做:
i = 0 for item in L: print(i, item) i += 1
对于C系列语言的程序员来说,这样的写法可能很正常;但对于“有强迫症的”Python程序员来说,这样就太复杂了,接受不了。
那怎么做呢?Python提供了一个函数,叫 enumerate(),可以将一个序号(从0开始)与一个序列中的每个元素进行一个“配对”,结果是一个有序序列。对于list和tuple,编号顺序即为元素原先的排列顺序。enumerate()也是可迭代对象,其每个元素的类型为tuple,每个tuple均含有2个元素,具体即为 (序号, 原先的元素)。在for关键字后面,按顺序使用两个循环变量,即可分别接住每个元素的序号和其自身:
>>> L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] >>> for i, ch in enumerate(L): ... print(i, ch) ... 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j
while循环
Python的另一种循环则是while循环,其格式如下:
while <cond>: [...]
其中<cond>为循环条件,[...]为循环体(即具体的要重复执行的代码)。
还是注意,<cond>后面有一个“:”,这一点与C系列语言不同。
还是注意,循环体的代码要缩进。
while循环的逻辑:只要<cond>为True(或转化为bool后为True)就将循环(体)一直执行下去,直到<cond>变为False才退出循环。
Python没有do while循环,但可以自己模拟一个出来。
循环的非常规控制:break和continue
在循环中,break可以提前退出循环,continue可以直接跳过当前的这轮循环并开始新一轮的循环。
break和continue一般情况下都要配合if使用(想想为什么)。此外,break和continue应当避免滥用,尽量通过编写好的循环条件以及好的变量更新方式来替代break和continue的使用。
Misc
死循环指(逻辑上)永远不会停止(执行完毕)的循环。在Python程序中,若陷入死循环,可以通过按Ctrl+C来强制结束程序。
浙公网安备 33010602011771号