2015-12-01 50 views
0

我只是一個初學者程序員,只是想問是否可以接受/良好的代碼混亂你的迭代器在for循環中。 示例(Python):亂七八糟在循環中的迭代

For i in range(n) 
if _statement_: 
     i -= 1 
     ... 
我不是有一個問題或任何

,我的代碼似乎工作得很好,像這樣的,但我不知道這是否算作「好」的代碼。

+0

它不會做任何事情,你的實際迭代,這隻會使'i'參考其他一些變量。也就是說,它仍然會運行n次,無論你將「i」設置爲等於 –

+0

除了你有語法問題。 'range(n)'後面缺少':',對'if'塊缺少意圖 – Alexander

回答

0

你不惹迭代 - 您只需創建一個同名的變量,並用它做什麼

>>> for a in range(5): 
... print id(a) 
... print a 
... a -= 1 
... print id(a) 
... print 
... 
24822128 
0 
24822152 

24822104 
1 
24822128 

24822080 
2 
24822104 

24822056 
3 
24822080 

24822032 
4 
24822056                 

正如你可以看到這些都是不同變量和循環明顯迭代5次。

這是一個很好的做法嗎? 。這是一種相反的東西,因爲人們應該期望在循環內部,「a」在每一行中都是相同的。如果你想實際影響重複循環的數量不應該使用while循環相反,你應該有所不同命名您的變量,像

>>> for a in range(10): 
... print a 
... b = a - 1 

0

您提供的代碼是可以接受的,但不是特別有效。您的循環將運行相同的次數,無論您是否修改i

>>> for i in range(5): 
>>>  i = i - 1 
>>>  print(i) 
-1 
0 
1 
2 
3 

當你修改變量i,它會創建一個新的,從一個控制迴路分開。

-1

我認爲修改你的迭代器的當前值是好的,並且只是一個新的變量。但我不會建議修改迭代器本身就像

my_list = [1, 2, 3, 4] 
for i in my_list: 
    my_list.append(i+4) 

會產生一個無限循環