本篇札记是自己在学习《利用Python
进行数据分析》一书中看到了break
和continue
的例子,觉得有必要理解下Python
中的for
循环控制语句。在Python
中控制流主要有三种:if
、break
和continue
。本文中讲解一下后两种,同时讲解Python
中缩进对代码的影响。
break
- 一层循环遇到
break
条件满足,直接结束循环 - 当
if
条件不满足的时候,执行sum+=i
的操作
list2 = [1,2,3,5,8,4,9]
sum = 0
for i in list2:
if i == 8:
break
sum += i
sum
- 两层循环,
break
只能终止内层循环,外层循环继续 缩进不同,代码块不同,数据结构完全不同
,对输出结果造成影响,看下面的三种情形:
缩进不同对代码输出影响
情形1:print和第一个for对齐
break
控制内层循环即第二层- 代码是按照顺序依次执行的
print
不在循环体里面,只有等最外层的for
全部执行完毕才会执行
image.png
for i in range(4):
for j in range(4):
if j > i:
break
print((i, j))
(3, 3)
ij是否满足break是否输出
00否(继续j的循环)否
01是(跳出j的循环)否
10否(继续j的循环)否
11否(继续j的循环)否
12是(跳出j的循环)否
20否(继续j的循环)否
21否(继续j的循环)否
22否(继续j的循环)否
23是(跳出j的循环)否
30否(继续j的循环)否
31否(继续j的循环)否
32否(继续j的循环)否
33否(继续j的循环)是(输出最后的一次结果)
34是(跳出j的循环)结束
情形2:print和第二层for对齐
break
只能控制离它最近的循环,此处为第二层循环- 每次当有i进来,只有第二层
for
循环执行完毕,输出打印print
结果 print
在第一个for
循环里面,for
循环了4
次,所以输出4
个结果
for i in range(4):
for j in range(4):
if j > i:
break
print((i, j))
(0, 1)
(1, 2)
(2, 3)
(3, 3)
ij是否满足break是否输出
00否(继续j)否
01是(跳出j)是,输出当前(i,j)值(0,1)
10否(继续j)否
11否(继续j)否
12是(跳出j)是,输出当前(i,j)值(1,2)
20否(继续j)否
21否(继续j)否
22否(继续j)否
23是(跳出j)是,输出当前(i,j)值(2,3)
30否(继续j)否
31否(继续j)否
32否(继续j)否
33否(整个循环结束)是,输出当前(i,j)值(3,3)
情形3
for i in range(4):
for j in range(4):
if j > i:
break
print((i, j))
(0, 0)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
(2, 2)
(3, 0)
(3, 1)
(3, 2)
(3, 3)
解释
ij是否满足break是否输出
00否(继续j)是
01是(结束j)是
10否(继续j)是
11否(继续j)是
12是(结束j)是
20否(继续j)是
21否(继续j)是
22否(继续j)是
23是(结束j)是
30否(继续j)是
31否(继续j)是
32否(继续j)是
33否(继续j)是
34是(结束j)否
continue
continue
表示:满足当前条件,结束本次循环,继续下次循环
;上面的break
是直接终止后面的循环。
list1 = [1, 2, 3, None, 6, None, 8]
sum = 0
for i in list1:
if i == None:
continue
sum += i
sum
小礼物走一走,来简书关注我
赞赏支持
尤尔小屋© 著作权归作者所有
皮皮大
写了 86891 字,被 26 人关注,获得了 270 个喜欢
程序员/机器学习/量化交易/村上、东野迷/业余马拉松跑者 志之所趋,无远弗届,穷山距海,不能限也
喜欢
2