爲什麼下面的簡單循環沒有在循環結束時保存i
的值?'For'循環在Python中的行爲
for i in range(1, 10):
print i
i = i + 3
上面打印:
1
2
3
4
5
6
7
8
9
但它應該打印:
1
4
7
爲什麼下面的簡單循環沒有在循環結束時保存i
的值?'For'循環在Python中的行爲
for i in range(1, 10):
print i
i = i + 3
上面打印:
1
2
3
4
5
6
7
8
9
但它應該打印:
1
4
7
for
套i
每次迭代中,從對象的下一個值被遍歷。無論你在循環中設置了i
,都會被忽略。
該套件隨後被執行一次,由該迭代器提供每個項目,按升序索引的順序。每個項目依次使用標準分配規則分配給目標列表,然後執行套件。
i
是目標列表這裏,因此它被分配來自range(1, 10)
對象的每個值。稍後將i
設置爲其他內容不會改變表達式生成的range(1, 10)
。
如果您想要生成一個循環,而您要更改i
,請改爲使用while
循環;它每一次重考的條件通過:
i = 1
while i < 10:
print i
i += 3
,但它會更容易,只需使用一個range()
了一步,前面生產值:
for i in range(1, 10, 3):
print i
,我如何讓這不會發生? –
@NishantSingh你可以控制你的範圍內的步驟(1,10,3)' – Ian
好的答案!關鍵在於沒有測試正在進行。 for循環在python中是一個實際循環,一個迭代,而不是'do-test-repeat' for其他語言的循環。在java中,我認爲有'for each'循環,它更像Python循環;也許這樣的命名使得它更清楚該循環的行爲方式,對嗎? –
可能[相關解釋](http://stackoverflow.com/questions/35618307/how-to-transform-string-into-dict/35618686#35618686)。 – Ian
爲什麼會這樣工作?這完全違背了直覺。 – Andrey
你的變量被設置在「for」中,打印出來,然後你再添加。如果你想要輸出,你應該「打印i + 3」 – miguels