void get_some_num(int a[], int length) {
int i;
for(i = 0; i < length - 1; ++i) {
if(something) i++; // jump a num in the array
a[i] = 1;
}
return some_num;
}
在for循环中使用i += n
语句来迭代数组时,C语言可以跳转一些元素(例如n),但我发现通过优雅地使用python的for语句很难实现。
我该怎么做?
答案 0 :(得分:4)
如果您想以类似于C
的方式执行此操作,那么只需使用while
循环(任何for
循环实际上只是while
的特化毕竟循环):
i = 0
end = 10
while i < end:
# NOTE: do something with i here
if i == 5:
i += 3
i += 1
或者您可以显式创建并继续前进迭代器(我觉得它的可读性差得多):
it = iter(range(0, 10))
for i in it:
if i == 5:
for j in range(0, 3):
i = next(it)
print(i)
答案 1 :(得分:1)
Python还支持继续“跳过步骤”并继续循环。
在for循环中使用它:
for i in range(0, 10):
if i == 5:
continue
# will never print 5
print(i)
如果您希望在迭代中跳过几个索引,那么您可以使用while循环执行类似的操作:
x = range(0, 10)
i = 0
while i <= len(x):
if i == 5:
i += 3
continue
print(i)
i += 1
输出:
0
1
2
3
4
8
9
10
答案 2 :(得分:0)
我从来没有太多需要跳过多个步骤,但是......你可以使用每次跳过时减少的skip
变量。
skip = 0
for i, item in enumerate(my_list[:-1]):
if skip:
skip -= 1
continue
if item == my_list[i+1]:
skip = 1 # or whatever n value you want
continue
# Other code