Python 3.x Python 3:如果条件未满足,则跳到下一个迭代-循环中的循环
我有一个循环中的一个循环,如下所示:Python 3.x Python 3:如果条件未满足,则跳到下一个迭代-循环中的循环,python-3.x,loops,iteration,next,Python 3.x,Loops,Iteration,Next,我有一个循环中的一个循环,如下所示: 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 然而,这是行不通的。有没有人能提出为什么这个逻辑会有问题? 这是真正的代码。上
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])
array=[];
对于范围(1,20)内的k:
y=2**k*(2**(k+1)-1)
array.append(y)
iGen=(范围(0,len(数组))中的i表示i)
对于iGen中的i:
x=1
对于范围(2,数组[i])中的j:
如果数组[i]%j==0:
g=x
x=x+j
如果x/g<2:
下一个(伊根)
如果x==数组[i]:
打印(数组[i])
您想使用中断。这将打破您的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
你想休息一下。这将打破您的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
可能重复的?嘿@Jerrybibo continue将迭代j而不是i对吗?不过我想重复一下,不,我只是试了一下,你是对的!这解决了我的问题!!另外,您可以用
范围(0,len(数组))
替换(范围(0,len(数组))
。不需要包装生成器。是的,已经这样做了,但是谢谢你这么说。可能重复的?嘿@Jerrybibo continue会迭代j,而不是我,对吗?不过我想重复一下,不,我只是试了一下,你是对的!这解决了我的问题!!另外,您可以用范围(0,len(数组))
替换(范围(0,len(数组))
。不需要包装发电机。是的,已经这样做了,但是谢谢你这么说。就要回答这个问题了<代码>下一步仅用于检索下一项。它不会停止逻辑流程。是的,谢谢。或者您可以像Jerrybibo建议的那样使用continue。@OcK,continue将继续处理j循环中的下一项。i-loop中的下一个项目将继续中断。完全正确,我只是在测试它并想添加它,谢谢澄清!!是的,没问题。谢谢我正要回答这个问题<代码>下一步仅用于检索下一项。它不会停止逻辑流程。是的,谢谢。或者您可以像Jerrybibo建议的那样使用continue。@OcK,continue将继续处理j循环中的下一项。i-loop中的下一个项目将继续中断。完全正确,我只是在测试它并想添加它,谢谢澄清!!是的,没问题。谢谢