如何在Python循环中向上迭代for
在其他编程语言中
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)
这两种方法的效果是一样的。