我想知道是否可以在 for 循环中更改迭代器的值?
例如,我想编写一个程序来通过以下方式计算数字的素因数:
def primeFactors(number):
for i in range(2,number+1):
if (number%i==0)
print(i,end=',')
number=number/i
i=i-1 #to check that factor again!
我的问题:是否可以以当我更改时的方式更改最后两行i
and number
in the if
块,它们的值发生变化for
loop!
更新:将迭代器定义为global
变量,可以帮助我吗?为什么?
简短的回答(如丹尼尔·罗斯曼的回答):不
长答案:不,但这就是你想要的:
def redo_range(start, end):
while start < end:
start += 1
redo = (yield start)
if redo:
start -= 2
redone_5 = False
r = redo_range(2, 10)
for i in r:
print(i)
if i == 5 and not redone_5:
r.send(True)
redone_5 = True
Output:
3
4
5
5
6
7
8
9
10
如你看到的,5
被重复。它使用了一个生成器函数,该函数允许重复索引变量的最后一个值。还有更简单的方法(while
循环、要检查的值列表等),但这一个与您的代码最接近。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)