首页 > 解决方案 > 以可变步骤循环遍历数组或列表

问题描述

我试图弄清楚如何以可变步骤循环遍历数组或列表。

例如,如果我有以下列表......

a = [0,0,1,0,0,1,0]

...并希望使用以下逻辑:

为什么这个片段仍然返回 0-6 而不是 0,3,6 的值?

for idx,val in enumerate(a):
        print(idx)
        idx+=3

标签: pythonlist

解决方案


不要使用for循环。

forpython 中的循环与 C 或 Java 中的循环不同。在这些语言中,for循环具有初始条件终止条件和每次循环运行的增量。而在 python 中,for循环更像是一个for each循环——你给它一个可迭代对象,它会为该可迭代对象中的每个项目运行代码。

在运行时修改可迭代对象是一个坏主意,可能会产生难以预测的影响,并且通常会破坏您的代码。


但是,您始终可以使用while循环:

a = [0,0,1,0,0,1,0]
idx = 0

while(idx < len(a) - 2):
    print(idx)
    if a[idx + 2] == 0:
        idx += 2
    elif a[idx + 2] == 1:
        idx += 1
print(idx)

产生预期的输出

0 1 3 4 6

或者,如果您将增量分别更改为3and 2,而不是2and 1

0 2 5

推荐阅读