【问题标题】:How to break through multiple for loop in python [duplicate]如何在python中突破多个for循环[重复]
【发布时间】:2020-04-10 22:13:14
【问题描述】:

我有一个下面的python代码:

def get_sess(sheet, i):
    first_time = True
    old_eid = " "
    old_sess = " "
    k = dict()
    p = []
    for i in range(i, 2712):  # (pt1)
        eid = str(sheet.cell_value(i, 2)).zfill(3)
        if first_time:
            old_eid = eid
            first_time = False
        if old_eid == eid:
            old_sess = str(sheet.cell_value(i, 21)).zfill(3)
            if d:
                for z in range(len(d)):  # (pt2)
                    if d[z]['sess_name'] == old_sess:
                        # This means this sess data is already saved in list, so ignore
                        continue
            new_sess = old_sess
            weight = sheet.cell_value(i, 14)
            product = str(sheet.cell_value(i, 5)).zfill(3)

            k['sess_name'] = old_sess
            k['weight'] = weight

            t = 0
            while new_sess == old_sess:
                product = str(sheet.cell_value(i + t, 5)).zfill(3)
                p.append(product)
                t = t + 1
                new_sess = str(sheet.cell_value(i + t, 21)).zfill(3)
            k['product'] = p
            d.append(k)

在上述函数中,我在pt1pt2 有两个for 循环。在第二个 for 循环中,我有一个 if 条件,我正在检查 old_sess 是否与存储在列表中的 sess 相同,如果是,我需要跳过它之后的所有代码,并希望首先再次返回我的代码for 循环。但是,如果我在 if 条件中使用 continuebreak,它只会中断第二个 for 循环并执行我不想要的其余代码。

如果if条件成立,有什么办法可以直接跳转到第一个for循环。

谢谢

【问题讨论】:

  • This question 似乎是重复的。此外,在函数中提取双循环并将return 用作多个break 可以工作,并且是Pythonic。编辑:杰森贝克的回答明确提到,当我第一次浏览这个问题时,我似乎跳过了它。
  • 你在迭代第二个循环是什么? z 在第二个 for 块内根本没有被引用。
  • 我认为给出的重复目标不是最好的,这会更好stackoverflow.com/questions/189645/…
  • +1 表示return 解决方案。始终可以构造您的代码,以便 return 启用多循环中断。而且它显然比布尔替代更 Pythonic

标签: python for-loop


【解决方案1】:

开始使用布尔变量“flag”,并在第一个 for 循环中进行条件检查。

只要 old_Sess 的值等于 sess,您就可以将 flag 设置为 'true' 并中断第二个循环。在第一个循环中恢复代码流时,条件检查标志将中断第一个循环

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2012-12-07
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多