2013-02-01 181 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; 
}