【问题标题】:Python 3: skipping to next iteration if condition is not fulfilled - loop in loopPython 3:如果条件不满足,则跳到下一次迭代-循环中的循环
【发布时间】:2017-10-05 16:02:08
【问题描述】:

我有一个循环,如下所示:

iGen = (i for i in range(1,10))
for i in iGen:
   for j in range(1,10):
      some operations
      if certain operation not fulfilled:
         next(iGen)

因此,例如,如果 i = 5 并且条件未满足,则应取消 j 循环,并且应将 i 迭代到 6。

但是,这不起作用。有人建议为什么这个逻辑会出错? 这是真正的代码。上面的伪代码只是为了让逻辑更清晰。

array = [];
for k in range(1, 20):
    y=2**k*(2**(k+1)-1)
    array.append(y)

iGen = (i for i in range(0, len(array)))
for i in iGen:
    x = 1
    for j in range(2, array[i]):
        if array[i] % j == 0:
            g = x
            x = x + j
            if x / g < 2:
                next(iGen)

    if x == array[i]:
        print(array[i])

【问题讨论】:

  • 嘿@Jerrybibo continue 会迭代 j 而不是我对吗?但是我想迭代 i.
  • 不,我刚试过,你是对的!这解决了我的问题!谢谢
  • 顺便说一句,您可以将(i for i in range(0, len(array))) 替换为range(0, len(array))。不需要包装生成器。
  • 是的,已经这样做了,但谢谢你这么说。

标签: python-3.x loops iteration next


【解决方案1】:

您想使用休息时间。这将打破你的 j 循环并继续 i 循环中的下一个项目。

iGen = (i for i in range(1,10))
for i in iGen:
   for j in range(1,10):
      some operations
      if certain operation not fulfilled:
         break

【讨论】:

  • 正要回答这个问题! next 仅用于检索下一项。它不会停止逻辑流程。
  • 好的,谢谢。或者您可以像 Jerrybibo 建议的那样使用 continue。
  • @OcK,a continue 将继续 j 循环中的下一个项目。中断将继续 i-loop 中的下一项。
  • 完全正确,我只是在测试它,想添加它,谢谢澄清!!
  • 是的,没问题。谢谢!
猜你喜欢
  • 2021-05-15
  • 2020-02-20
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2016-03-18
  • 2017-08-29
  • 2014-01-07
  • 1970-01-01
相关资源
最近更新 更多