【问题标题】:Why aren't iterations skipped in a for loop when the loop variable is incremented? [duplicate]当循环变量递增时,为什么在 for 循环中不跳过迭代? [复制]
【发布时间】:2018-02-17 03:55:02
【问题描述】:
def loop():
    for i in range (0,9):
        pass
        if i == 3:
            i = i +3

        print(i)

loop()

当前输出:

0
1
2
6
4
5
6
7
8

预期输出:

0
1
2
6
7
8
9

这是否与 Python 中创建堆栈帧的方式有关? 为什么即使我们增加 i 迭代次数也不会减少?

【问题讨论】:

  • i 不是控制循环的神奇变量。您可能想改用while

标签: python loops for-loop


【解决方案1】:

i 的值与循环执行没有任何关系。这是由...range(0, 9)(或range(9))决定的。 for 循环旨在迭代一个迭代器,并迭代一组迭代次数。如果您想跳过循环迭代,您可以使用受条件控制的continue 来执行此操作。

不过,对于您的情况,我建议使用 while 循环,这是此类要求的更惯用选择。

i = 0
while i < 9:
    ... # something happens here
    if i == 3:
        i += 3
    else:
        i += 1

进一步阅读; When to use "while" or "for" in Python

【讨论】:

  • 另一种惯用方式是链接两个范围。
  • @MadPhysicist 假设这是控制循环的唯一条件,是的。
  • 你总是可以链接更多的范围。 :)
  • @MadPhysicist 唷!这肯定与惯用语相反。
猜你喜欢
  • 1970-01-01
  • 2021-11-15
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
相关资源
最近更新 更多