了解尝试跳过循环的 N 次迭代时的错误
Understanding errors in attempts to skip N iterations of a loop
我想跳过一个循环的3次迭代,做了各种尝试。
我想知道如何正确地做到这一点,但更重要的是,我想了解为什么这些尝试中的每一个都以不同的方式失败。能解释一下吗?
这些数字只是示例。我如何真正使用它。您的列表可能是 ["donut", "carrot", "apple", "apple", "burger"]
,当您到达 carrot
时,您发现您必须跳过两项(一只狗吃掉了您的两种食物),因此您的迭代应该是 ["donut", "apple", "burger"]
。所以你事先不知道要跳过哪些迭代。您只需获得要跳过的条件和迭代次数。
NUMBER 1. 这根本不会跳过任何迭代。
l = list(range(10))
for i in l:
if i == 3:
for j in range(3):
continue
print(i)
NUMBER 2. 这跳过了一些迭代,重复了一个迭代,混合了一些迭代,真是一团糟。
l = list(range(10))
for i in l:
if i == 3:
l.pop(i)
l.pop(i+1)
l.pop(i+2)
print(i)
NUMBER 3. 这只跳过一次迭代。
l = list(range(10))
for i in l:
if i == 3:
continue
continue
continue
print(i)
NUMBER 4. 这给出了语法错误。
l = list(range(10))
for i in l:
if i == 3:
continue 3
print(i)
NUMBER 5. 这会跳过所有剩余的迭代。
l = list(range(10))
countdown = 0
for i in l:
if i == 3:
countdown = 3
if countdown > 0:
cuntdown = countdown - 1
continue
print(i)
每种情况出了什么问题,我还能尝试什么?
除了有趣的是,您在第二个 if
语句中编写了 cuntdown
而不是 countdown
之外,您的第 5 号代码将有效。
以下是其他方法不起作用的原因:
1号:
Continue
只会将您的代码移动到当前正在执行的循环的下一次迭代。在此示例中,它只是移动到 for j in range(3):
的下一个循环而不是 for i in l
,因此不会跳过原始循环的迭代。
2号:
在这里,您在遍历列表的同时弹出列表的元素。这并不是真正可取的,因为您最终会遇到索引错误或类似的错误。
3号:
这只会跳过一次迭代,因为一旦你的第一个 Continue
被执行,循环会立即移动到 i == 4
的循环,而其余的 Continue
s 永远不会被执行。
4号:
Continue 3
不是与 Continue
一起使用的正确语法
我想跳过一个循环的3次迭代,做了各种尝试。
我想知道如何正确地做到这一点,但更重要的是,我想了解为什么这些尝试中的每一个都以不同的方式失败。能解释一下吗?
这些数字只是示例。我如何真正使用它。您的列表可能是 ["donut", "carrot", "apple", "apple", "burger"]
,当您到达 carrot
时,您发现您必须跳过两项(一只狗吃掉了您的两种食物),因此您的迭代应该是 ["donut", "apple", "burger"]
。所以你事先不知道要跳过哪些迭代。您只需获得要跳过的条件和迭代次数。
NUMBER 1. 这根本不会跳过任何迭代。
l = list(range(10))
for i in l:
if i == 3:
for j in range(3):
continue
print(i)
NUMBER 2. 这跳过了一些迭代,重复了一个迭代,混合了一些迭代,真是一团糟。
l = list(range(10))
for i in l:
if i == 3:
l.pop(i)
l.pop(i+1)
l.pop(i+2)
print(i)
NUMBER 3. 这只跳过一次迭代。
l = list(range(10))
for i in l:
if i == 3:
continue
continue
continue
print(i)
NUMBER 4. 这给出了语法错误。
l = list(range(10))
for i in l:
if i == 3:
continue 3
print(i)
NUMBER 5. 这会跳过所有剩余的迭代。
l = list(range(10))
countdown = 0
for i in l:
if i == 3:
countdown = 3
if countdown > 0:
cuntdown = countdown - 1
continue
print(i)
每种情况出了什么问题,我还能尝试什么?
除了有趣的是,您在第二个 if
语句中编写了 cuntdown
而不是 countdown
之外,您的第 5 号代码将有效。
以下是其他方法不起作用的原因:
1号:
Continue
只会将您的代码移动到当前正在执行的循环的下一次迭代。在此示例中,它只是移动到 for j in range(3):
的下一个循环而不是 for i in l
,因此不会跳过原始循环的迭代。
2号: 在这里,您在遍历列表的同时弹出列表的元素。这并不是真正可取的,因为您最终会遇到索引错误或类似的错误。
3号:
这只会跳过一次迭代,因为一旦你的第一个 Continue
被执行,循环会立即移动到 i == 4
的循环,而其余的 Continue
s 永远不会被执行。
4号:
Continue 3
不是与 Continue