繁体   English   中英

如何从Python的内部循环影响外部循环变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM