python终止循环_python利用生成器终止两层for循环

本文介绍了如何利用Python生成器优化两层循环的退出逻辑。在寻找两个列表中和为10的数对时,传统方法需要通过设置外部变量和额外的判断来终止循环,代码显得较为繁琐。通过定义生成器函数,可以更简洁地实现相同功能,避免了多重循环中break的复杂性,提高了代码的可读性。
摘要由CSDN通过智能技术生成

python利用生成器终止两层for循环

两层循环过程中,如果想通过break终止循环,是一件简单,但却很麻烦的事情,例如下面的这段代码

lst1 = [1, 2, 4, 5, 6]

lst2 = [1, 5, 6, 8, 9]

stop = False

for i in lst1:

for j in lst2:

if i + j == 10:

stop = True

break

if stop:

break

两层for循环的目的非常简单,从两个列表中各找出一个数,使得他们的和等于10,而且只需找出一个组合即可。

找到满足要求的组合后,为避免不必要的循环,需要终止循环,而此时,if条件语句在for循环的最里层,此处执行break,只能跳出最里层的for循环,想要终止最外层的for循环,就必须传递终止信号给它,代码里,通过stop=True,告知外层for循环可以终止了。

这样的代码写起来,显然有些繁琐,最后的if stop判断总显得多余,面对这种情况,可以巧妙的利用生成器来避免这种复杂的写法。

lst1 = [1, 2, 4, 5, 6]

lst2 = [1, 5, 6, 8, 9]

def num_generator(lst1, lst2):

for i in lst1:

for j in lst2:

yield i, j

for i, j in num_generator(lst1, lst2):

if i + j == 10:

print(i, j)

break

生成器num_generator里通过两层for循环对数据进行遍历,真正的业务逻辑使用一个for循环,这里就避免了跳出两层for循环的困境,这一次break,结束了for循环对num_generator的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值