python的for else结构
我们常常遇到这样的情景:
在一个循环中,如果满足某个条件,则提前终止循环;如果循环是自然终止,则进行后续动作
但在python的for i in range中,我们无法通过循环变量i来判断循环是否被提前终止,如
for i in range(5):
if i == 4:
break
for i in range(5):
pass
这两种循环最终i都是4,但前者是提前终止,后者是正常终止
为了判断for循环是否提前终止以进行不同的分支操作,我们常规的操作是引入一个break_flag
break_flag = 0
for i in range:
if condition:
break_flag = 1
break
# 如果正常终止
if not break_flag:
natural_termination_operation()
但我们可以使用for else结构,更为简洁
for i in range:
if condition:
break
else:
natural_termination_operation()
当for循环正常执行时,才执行else语句,如果for循环因为break终止了,就不执行else语句
例
给定一个数组,如果数组中所有元素都是3的倍数,输出yes,否则不返回任何值
for i in nums:
if nums[i] % 3 != 0:
break
else:
# natural_termination_operation()
print('yes')
网友评论