3

我对python很陌生。我对c++和python中的for循环有一个小查询。在c,c++中,如果我们i如下例所示修改变量,则新值会i反映在下一次迭代中,但事实并非如此在python中的for循环中。所以,当真的需要跳过一些迭代而不实际使用诸如continue等之类的函数时,如何在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
4

5 回答 5

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
于 2013-02-01T21:36:45.117 回答
4

这是因为在 python 中,在循环的每次迭代中,变量i都被选为range(5). 但是,在 C++ 中,变量i由循环增量循环内发生的事情管理。

于 2013-02-01T21:31:12.087 回答
1

在循环的每次迭代中都将i变量设置为迭代器的输出range(5)。尽管您可以在循环中进行修改,但它会被覆盖。

于 2013-02-01T21:31:21.703 回答
1

i每次迭代都会重置,这意味着对 i 的任何突变都会在下一个循环中被忽略。正如 Daniel Fischer 在评论中所说,如果您想在 Python 中执行此操作,请使用 while 循环。

就像是:

for (int i = 0; i < 5; ++i) {
    int x = i;
    if (x == 2) {
        x = x + 2;
    }
    std::cout << x << std::endl;
}
于 2013-02-01T21:31:22.553 回答
0

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

于 2013-02-01T21:31:16.903 回答