[爆卦]迭代 迴圈是什麼?優點缺點精華區懶人包

為什麼這篇迭代 迴圈鄉民發文收入到精華區:因為在迭代 迴圈這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者chocoluv (粉圓冰)看板Python標題[問題] for 迴圈 迭代結果不一樣時間Sun...


想請問為何使用range去迭代,和不用range去迭代,輸出的結果會有所不同?

這是用range(len())去迭代的方法:
https://i.imgur.com/fJzthe3.png
https://i.imgur.com/WfyE0AB.png

這是直接for i in list去迭代的結果:
https://i.imgur.com/mX7XbgV.png
https://i.imgur.com/VwXCJLN.png
簡單來說就是都沒有改成integer。

另外如果以comprehension去寫:
number = [ int(i) for i in input.split()] 感覺方法和上面類似,結果卻和上面的不同
,但和第一種方式一樣有成功改成integer,想請教原因。

非常感謝!

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.225.21
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1553408689.A.26C.html
※ 編輯: chocoluv (27.242.225.21), 03/24/2019 14:28:56
※ 編輯: chocoluv (27.242.225.21), 03/24/2019 14:32:03
※ 編輯: chocoluv (27.242.225.21), 03/24/2019 14:32:52
※ 編輯: chocoluv (27.242.225.21), 03/24/2019 14:35:13
TitanEric: 第二種寫法只是assign給copy而已 不會動到原本的list 03/24 15:07
TitanEric: 第一種寫法你轉int後又assign給list element 就會變 03/24 15:08
TitanEric: comprehension跟一跟二都不一樣 比較像是append新的 03/24 15:09
chocoluv: 感謝回覆。想再請問:第二種寫法不會動到原list,是因 03/24 15:56
chocoluv: 為for迴圈這樣執行時,會直接copy一個number進行迭代的 03/24 15:56
chocoluv: 關係嗎?所以如果要用for迴圈去修改原list內容時,只能 03/24 15:56
chocoluv: 用第一種方式嗎? 03/24 15:56
toy9986619: 不然就要直接用 map function 取得改變後的 list 03/24 17:04
toy9986619: 第一個用法就是用陣列偏移量去取得值與改變陣列內容 03/24 17:12
toy9986619: 第二個算是把陣列的值 copy 出來給該變數而已 03/24 17:12
toy9986619: 希望我沒有解釋錯誤 03/24 17:12
TitanEric: 樓上沒錯 03/24 23:26
iphone2003: 那個comprehension比較像這樣 03/25 10:57
iphone2003: number = [] 03/25 10:57
iphone2003: for i in input().split: 03/25 10:57
iphone2003: number.append(int(i)) 03/25 10:58
iphone2003: 看起來有一點點像第二種所以可能因此搞混了,不過它 03/25 11:00
iphone2003: 們其實不一樣 03/25 11:00
iphone2003: 不過比較方便的應該還是直接list(map(input, int))就 03/25 11:00
iphone2003: 好 03/25 11:00
TitanEric: 大推樓上 03/25 15:20
chocoluv: 感謝! 03/25 19:31
jlhc: 這應該不只是python... 建議瞭解一下變數... 03/25 20:12
chocoluv: 好的>< 03/25 21:37

你可能也想看看

搜尋相關網站