[問題] for 迴圈 迭代結果不一樣

看板Python作者 (粉圓冰)時間6年前 (2019/03/24 14:24), 6年前編輯推噓5(5019)
留言24則, 5人參與, 6年前最新討論串1/1
想請問為何使用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

03/24 15:07, 6年前 , 1F
第二種寫法只是assign給copy而已 不會動到原本的list
03/24 15:07, 1F

03/24 15:08, 6年前 , 2F
第一種寫法你轉int後又assign給list element 就會變
03/24 15:08, 2F

03/24 15:09, 6年前 , 3F
comprehension跟一跟二都不一樣 比較像是append新的
03/24 15:09, 3F

03/24 15:56, 6年前 , 4F
感謝回覆。想再請問:第二種寫法不會動到原list,是因
03/24 15:56, 4F

03/24 15:56, 6年前 , 5F
為for迴圈這樣執行時,會直接copy一個number進行迭代的
03/24 15:56, 5F

03/24 15:56, 6年前 , 6F
關係嗎?所以如果要用for迴圈去修改原list內容時,只能
03/24 15:56, 6F

03/24 15:56, 6年前 , 7F
用第一種方式嗎?
03/24 15:56, 7F

03/24 17:04, 6年前 , 8F
不然就要直接用 map function 取得改變後的 list
03/24 17:04, 8F

03/24 17:12, 6年前 , 9F
第一個用法就是用陣列偏移量去取得值與改變陣列內容
03/24 17:12, 9F

03/24 17:12, 6年前 , 10F
第二個算是把陣列的值 copy 出來給該變數而已
03/24 17:12, 10F

03/24 17:12, 6年前 , 11F
希望我沒有解釋錯誤
03/24 17:12, 11F

03/24 23:26, 6年前 , 12F
樓上沒錯
03/24 23:26, 12F

03/25 10:57, 6年前 , 13F
那個comprehension比較像這樣
03/25 10:57, 13F

03/25 10:57, 6年前 , 14F
number = []
03/25 10:57, 14F

03/25 10:57, 6年前 , 15F
for i in input().split:
03/25 10:57, 15F

03/25 10:58, 6年前 , 16F
number.append(int(i))
03/25 10:58, 16F

03/25 11:00, 6年前 , 17F
看起來有一點點像第二種所以可能因此搞混了,不過它
03/25 11:00, 17F

03/25 11:00, 6年前 , 18F
們其實不一樣
03/25 11:00, 18F

03/25 11:00, 6年前 , 19F
不過比較方便的應該還是直接list(map(input, int))就
03/25 11:00, 19F

03/25 11:00, 6年前 , 20F
03/25 11:00, 20F

03/25 15:20, 6年前 , 21F
大推樓上
03/25 15:20, 21F

03/25 19:31, 6年前 , 22F
感謝!
03/25 19:31, 22F

03/25 20:12, 6年前 , 23F
這應該不只是python... 建議瞭解一下變數...
03/25 20:12, 23F

03/25 21:37, 6年前 , 24F
好的><
03/25 21:37, 24F
文章代碼(AID): #1SboAn9i (Python)
文章代碼(AID): #1SboAn9i (Python)