本文最后更新于 271 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
循环
循环的作用在于将一段代码重复执行多次。
while 循环
while <condition>:
<statesments>
Python会循环执行
例如,计算数字0到1000000的和:
i = 0
total = 0
while i < 1000000:
total += i
i += 1
total
499999500000
for 循环
for <variable> in <sequence>:
<indented block of code>
for 循环会遍历完
上一个例子可以改写成如下形式:
total = 0
for i in range(100000):
total += i
total
4999950000
continue 语句
遇到 continue 的时候,程序会返回到循环的最开始重新执行。
例如在循环中忽略一些特定的值:
values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
if i % 2 != 0:
# 忽略奇数
continue
print(i, i / 2)
6 3.0
4 2.0
2 1.0
break 语句
遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足:
command_list = ['start',
'process',
'process',
'process',
'stop',
'start',
'process',
'stop']
for command in command_list:
if command == 'stop':
break
print(command)
start
process
process
process
在遇到第一个 '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')
Found: 7
values = [11, 12, 13, 100]
for x in values:
if x <= 10:
print('Found:', x)
break
else:
print('All values greater than 10')
All values greater than 10
列表推导式
循环可以用来生成列表:
values = [10, 21, 4, 7, 12]
squares = []
for x in values:
squares.append(x**2)
squares
[100, 441, 16, 49, 144]
列表推导式可以使用更简单的方法来创建这个列表:
squares = [x**2 for x in values]
还可以在列表推导式中加入条件进行筛选:
squares = [x**2 for x in values if x <= 10]
squares
[100, 16, 49]
也可以使用推导式生成集合和字典:
square_set = {x**2 for x in values if x <= 10}
square_set
{16, 49, 100}
square_dict = {x: x**2 for x in values if x <= 10}
square_dict
{10: 100, 4: 16, 7: 49}
计算上面例子中生成的列表中所有元素的和:
sum([x**2 for x in values if x <= 10])
165
括号可以省略:
sum(x**2 for x in values if x <= 10)
165
第二种写法会减少一次列表的生成,速度会更快一些。