循环
循环的作用在于将一段代码重复执行多次。
while 循环
while <condition>:
<statesments>
Python会循环执行<statesments>,直到<condition>不满足为止。
例如,计算数字0到1000000的和:
i = 0
total = 0
while i < 1000000:
total += i
i += 1
print (total)
之前提到,空容器会被当成 False ,因此可以用 while 循环来读取容器中的所有元素:
plays = set(['Hamlet', 'Macbeth', 'King Lear'])
while plays:
play = plays.pop()
print ('Perform', play)
循环每次从 plays 中弹出一个元素,一直到 plays 为空为止。
for 循环
for <variable> in <sequence>:
<indented block of code>
for 循环会遍历完<sequence>中所有元素为止
上一个例子可以改写成如下形式:
plays = set(['Hamlet', 'Macbeth', 'King Lear'])
for play in plays:
print ('Perform', play)
使用 for 循环时,注意尽量不要改变 plays 的值,否则可能会产生意想不到的结果。
之前的求和也可以通过 for 循环来实现:
total = 0
for i in range(100000):
total += i
print (total)
运行时间:
%timeit for i in range(1000000): i = i
可以看出,xrange 用时要比 range 少。
continue 语句
遇到 continue 的时候,程序会返回到循环的最开始重新执行。
例如在循环中忽略一些特定的值:
values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
if i % 2 != 0:
# 忽略奇数
continue
print (i/2)
break 语句
遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足:
command_list = ['start',
'process',
'process',
'process',
'stop',
'start',
'process',
'stop']
while command_list:
command = command_list.pop(0)
if command == 'stop':
break
print(command)
在遇到第一个 'stop' 之后,程序跳出循环。
else语句
与 if 一样, while 和 for 循环后面也可以跟着 else 语句,不过要和break一起连用。
- 当循环正常结束时,循环条件不满足,
else被执行; - 当循环被
break结束时,循环条件仍然满足,else不执行。
不执行:
values = [7, 6, 4, 7, 19, 2, 1]
for x in values:
if x <= 10:
print ('Found:', x)
break
else:
print ('All values greater than 10')
执行:
values = [11, 12, 13, 100]
for x in values:
if x <= 10:
print ('Found:', x)
break
else:
print ('All values greater than 10')