[英]How to affect outer loop variable from inner loop in Python?
这是在Java中:
for(int i=0; i<10; i++){
while(i%3!=0)
i++;
System.out.print(i + " ");
}
这将输出:
0 3 6 9
我正在尝试在Python 3中实现类似的代码块。
在外部循环中,我不能使用范围,因为它会导致在我认为某处读取的整个列表上发生迭代。 所以,我在下面尝试,但是它危险地运行,无限地运行。
i=1
while i<=10:
while i%3 is not 0:
i+=1
print('run')
我可以通过删除内部while
并将代码更改为i+=3
来实现目标。 但是我要制作的程序具有重要条件,因此必须存在。 必须有两个循环,并且基于内部循环条件匹配,我正在增加迭代变量,因此当我中断并处理一些程序输出时,父循环应该从我在内部循环中停止的地方开始进行迭代。 以上只是我想分享这个问题的一个示例。 我需要有关如何复制Python中Java代码中所述更改的建议。
更新:这是我尝试过的程序: https : //softwareengineering.stackexchange.com/questions/327908/finding-total-number-of-subarrays-from-given-array-of-numbers-with-equal-最大与
您的示例中不需要两个循环。
while i<=10:
if i%3 == 0:
print(i+ " ")
i++
您的代码无限运行,因为当它等于3时,您永远不会递增i
i = 0
while i < 10:
while i % 3 is not 0:
i += 1
print(str(i) + " ")
i += 1
另一种选择是只使用列表理解:
print(' '.join([i for i in range(10) if i % 3 == 0])
好。 对党的另一个建议。 可能会对您的实际任务有所帮助:
g = iter(range(10))
for i in g:
while i%3 is not 0:
i = next(g)
print(i)
主要区别在于,当内部循环超出为迭代器定义的范围(即,为外部循环)时,这将引发StopIteration
异常。 可能是需要的,也可能不是。
从我对OP的问题的评论:
for i in range(0, 11, 3): print(i, end=' ')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.