跳过python中for循环的迭代?

Khi*_*min 1 c++ python for-loop

我之前用C++编程,但我是Python的新手.我搜索了这个,但我找不到合适的答案.在C++中,我可以这样做:

for(int i=0; i<10;i++)
{
   i+=5;
   std::cout<<i<<std::endl
}
Run Code Online (Sandbox Code Playgroud)

i的值将是5和11.但是在python中如果我这样做:

for i in range(0,10):
   i+=5
   print i
Run Code Online (Sandbox Code Playgroud)

i的值确实为循环的迭代更新,但在下一次迭代中,它将变为1.虽然我在python中理解,在每次迭代之后,我将包含由range生成的元组/列表中的下一个值,但有什么方法可以让它像C++一样跳过迭代?我真的不想使用next()函数5次

编辑:我可以使用范围函数的第三个参数作为一般用途,但如果我想跳过一些迭代,如果只有某个条件为真,那该怎么办呢.例如

for(int i=0; i<10;i++)
{
   if(i%2)i+=1;
   std::cout<<i<<std::endl
}
Run Code Online (Sandbox Code Playgroud)

Ned*_*der 6

如果要在条件为真时跳过迭代,则使用continue:

for i in range(10):
    if i % 2:
        continue
    print(i)
Run Code Online (Sandbox Code Playgroud)


Jer*_*ibo 5

我知道你在想什么,但有一些内置的python允许你在range()函数中设置迭代步骤.是官方的Python文档range().

实质上,x在每次迭代后跳过,你会做:

for i in range(start, stop, x + 1):
    # functions and stuff
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

  • 但是,它不是通用的.它只有在你不断跳过时才会起作用.如果你必须跳过3和2的倍数怎么办? (2认同)

Xio*_*biq 5

您可以使用常规while循环。它看起来不太好,但它可以完成工作。例如:

i = 0
while i < 100:
    print i
    if i % 2 == 0:
        i += 5
    i+=1
Run Code Online (Sandbox Code Playgroud)