作者henry8168 (番薯猴)
看板Python
標題[問題] for loop 的 index 存取問題
時間Tue Jun 26 14:56:52 2018
剛發現一件我誤會很久的事情,假設我有段程式碼:
for i in range(5):
print(i)
i += 1
我執行的預期結果是
0
2
4
結果卻是
0
1
2
3
4
https://imgur.com/V0glZVM.png
這跟 C++ 的理解真的差很多,請問我該怎麼讓它出現預期的結果?
因為這本來是寫在判斷某個條件發生時,要 iterator 跳過下次的執行用的。
寫 next(i) 無法達到目的,因為 i 是 int type。
請教各位大神。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.17.229
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1529996216.A.A47.html
※ 編輯: henry8168 (60.248.17.229), 06/26/2018 15:00:03
1F:→ djshen: 你寫i in range(5)那當然每次都是從range(5)拿一個出來阿 06/26 15:01
for i in range(5)
的邏輯應該是
for i in [0,1,2,3,4]
對吧。那這樣只能用 while loop 來寫嗎?
※ 編輯: henry8168 (60.248.17.229), 06/26/2018 15:02:55
3F:→ djshen: 看看range的文件 06/26 15:03
謝謝 確實跟 C++ 的 for 差很多
4F:推 andy19960407: 可以加上每次跳多少的參數吧 06/26 15:39
可是不是每次都要跳兩個,而是碰到特定條件才會跳。
如果只能用 while loop,那真的超醜的,初始、迴圈、i 加幾,就三行了ˊˋ
※ 編輯: henry8168 (60.248.17.229), 06/26/2018 15:56:37
5F:→ kobe8112: 設一個下次要跳過的bool旗標,每次for開頭看旗標, 06/26 16:58
7F:→ kobe8112: 如果要跳過,就先把旗標改為false,這次直接continue 06/26 16:58
8F:→ neil987: 看for 的部分 06/26 16:59
9F:→ kobe8112: 我是北七,沒看到已經有人回一樣意思的文了XDDD 06/26 16:59
10F:→ moyun: for i in range(0,6,2): 06/27 01:44
11F:→ moyun: print(i) 06/27 01:44
12F:→ moyun: 輸出結果就會是 06/27 01:44
13F:推 tmdggyygan: 初音 07/02 11:20