2013-02-01 212 views
2

我很新的python.I有一个小的查询循环在c + +和python。c,c + +如果我们修改变量i如下面的示例所示,该新值i在下一次迭代中反映出来,但python中的for循环并非如此。所以,如果真的需要跳过一些迭代而不实际使用像continue等函数,如何在python中处理它。for循环在c + +和python

for loop in c++

for(int i=0;i<5;++i) 
{ 
    if(i==2) 
    i=i+2; 

    cout<<i<<endl; 
} 

Output

0 

1 

4 

for loop in python

for i in range(5): 
    if i==2: 
     i=i+2 
    print i 

Output

0 

1 

4 

3 

4 
+1

在Python中,使用'while'来做这样的事情。 –

回答

7

我会反对,修改迭代变量在C++中,因为它使代码难以遵循的一般建议。

在python中,如果事先知道要迭代哪些值(并且它们中没有太多值),则可以构建这些值的列表。

for i in [0,1,4]: 
    print i 

当然,如果你真的必须改变Python中的迭代变量,你可以使用while循环代替。

i = 0 
while i < 5: 
    if i==2: 
     i=i+2 
    print i 
    i = i + 1 
4

这是因为在Python中,在循环的每次迭代中,变量i被选为range(5)中的下一个元素。但是,在C++中,变量i由循环增量来管理。

0

这是因为range(5)[0,1,2,3,4],因此for i in [0,1,2,3,4]

1

i的变量被设定在循环到range(5)迭代器的输出的每次迭代for i in range(5)是。虽然您可以在循环中进行修改,但它会被覆盖。

1

i每次迭代都会重置,这意味着任何对i的突变都会在下一个循环中被忽略。正如丹尼尔菲舍尔在评论中所说,如果你想在Python中做到这一点,请使用while循环。

这就像:

for (int i = 0; i < 5; ++i) { 
    int x = i; 
    if (x == 2) { 
     x = x + 2; 
    } 
    std::cout << x << std::endl; 
}