如何在Python循环中向上迭代for

2 投票
6 回答
4554 浏览
提问于 2025-04-16 07:40

在其他编程语言中

for(i=0; i<10; i++){
    if(...){
        i = 4;
    }
}

这个循环会向上走,

但在Python中,它不这样工作。

for i in range(1, 11):
    if ...:
        i = 4

那么我可以用'for'循环向上走吗?

6 个回答

5

这里的问题是,range(1, 11) 会返回一个列表,而 for...in 是用来遍历这个列表里的每一个元素的。所以如果你把 i 改成其他东西,结果就不会如你所愿。使用 while 循环应该能解决你的问题。

8

一种可能性是你想跳过某些项目。关于通过索引循环的事情总是比较麻烦,但这里有一种用while循环的方法可以做到。

i = 1
while i < 11:
    if predicate(i):
        i = 4
    i += 1

更好的方法是直接循环你想处理的列表中的项目,跳过那些你不想处理的项目。

for item in some_list_of_items:
    if not predicate(item):
        continue
    do_something_with_item(item)

或者可以使用生成器表达式来过滤这些项目。

for item in (item for item in some_list_of_items if predicate(item)):
    do_something_with_item(item)

5

在Python中,你不能直接在循环中修改你的循环变量。如果你想这么做,可以按照下面的方法来操作:

i = 0
while i < 10:
   if i == 3:
       i = 7
   print(i)
   i += 1

这样做就能达到你想要的效果。

你也可以这样做:

for i in range(10):
   if 2 < i < 7:
       continue
   print(i)

这两种方法的效果是一样的。

撰写回答