使用python的for语句时如何跳转一些步骤

时间:2015-10-16 01:38:25

标签: python for-loop

昨天我有一个干预,当我编写python代码来实现一些算法时,我有一个问题。使用C:

可以实现一些逻辑
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语句很难实现。

我该怎么做?

3 个答案:

答案 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