【发布时间】: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