每次迭代将控制转移到最外层的python

时间:2018-07-27 09:29:57

标签: python loops controls

考虑代码

for i in range(1,3):
  print(i)
  for j in range(4,7):
    print(j)

    for k in range(8,10):

      print(k)
      continue

预期输出为 [1 4 8 9] and [2 5 8 9]

每次迭代 而实际为[1 4 8 9 ],[5 8 9],[6 8 9],[2 4 8 9],[5 8 9],[6 8 9]

1 个答案:

答案 0 :(得分:0)

用这样的简单嵌套for循环无法实现所需的输出。

偶然地,continue语句说要执行包含它的循环的下一个迭代,而跳过该块中位于其下方的任何语句。但是您的continue位于该块的末尾,因此没有任何作用。

但是,即使有类似continue的语句将控制权传回了最外层的for i循环,它仍然 still 不会执行您想要的操作,因为{{ 1}}循环将再次从4开始计数。

但是,我们 可以通过使用内置的iter函数创建迭代器来实现您的目标。然后,我们可以根据需要使用next从该迭代器中获取每个项目。

for j

输出

it = iter(range(4, 7))

for i in range(1, 3):
    print(i, end=' ')
    j = next(it)
    print(j, end=' ')
    for k in range(8, 10):
        print(k, end=' ')
    print()

如果我们将第一条语句更改为

1 4 8 9 
2 5 8 9 

输出变为

for i in range(1, 4):