for - else 用法
在一般的 for 循环中,当我们无法知道循环是提前跳出,还是正常走完整个循环结束,需要通过额外的 if 判断语句进行判断。
lst = [1, 2, 3, 4, 5]
flag = 0
for i in lst:
if i == 6:
flag += 1
print("找到了6,做一些事情...")
break
if flag == 0:
print("没有找到6, 做其他事情...")
在一个不确定的列表中查找一个元素,如果找到这个元素可以break终止循环。但是如果遍历整个列表都找不到这个元素,就需要添加一个flag来记录。
if判断是否找到了这个元素,找到了赋值1。如果没有找到,就在循环结束后用if判断语句判断flag==0时,需要做什么。
for - else 结构解决上面的问题,不需要添加额外的flag和if判断语句。
当for循环中的if查找满足条件了,则break跳出循环。
若for循环中的if查找在遍历整个列表后都不满足条件,则正常终止循环,并执行else语句。
lst = [1, 2, 3, 4, 5]
for i in lst:
if i == 6:
print("找到了6")
break
else:
print("没有找到6")
# 输出:
没有找到6
for循环中的if查找语句在遍历完整个列表后,都没有找到需要查找的内容,则循环正常终止,然后执行else中的语句。
lst = [1, 2, 3, 4, 5]
for i in lst:
if i == 3:
print("找到了3")
break
else:
print("没有找到3")
# 输出:
1
2
3
找到了3
for循环中的if查找语句在遍历列表的时候,找到了需要查找的内容,则提前break跳出循环,后面的不会继续遍历,而且else中的语句不会执行。
示例:从一个二维数组数组中是否有某个数,并给出第一次出现的位置。
l = [range(5 * i, 5 * i + 5) for i in range(5)]
a = 22 # 要查找的数
print(l)
for i, x in enumerate(l):
for j, y in enumerate(x):
if y == a:
loc = (i, j)
break
else:
continue
print('Find it! And the loc is: ', loc)
break
# 输出: Find it! And the loc is: (4, 2)