[問題] swapping elements of list in forloop

看板Python作者 (剌糾CHANG)時間6年前 (2017/08/23 19:24), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
最近在嘗試複習演算法 剛好在重演SelectionSort觀念的時候遇到了點狀況 Code: http://imgur.com/4R5XSiA
Run: http://imgur.com/3l33eFP
原以為是程式碼寫錯,而無法進行排序交換 稍微改成: 僅把兩值存於新的變數再進行交換 Code: http://imgur.com/a/vEWut Run: http://imgur.com/U0YrdQZ
雖然成功進行了排序,但其主要是要看到每次迴圈所造成的變換順序 想請問該如何實現,每次交換皆成功print出來 另外在StackOverflow上查到一篇與此篇類似的文章, 卻不了解為什麼在迴圈中進行數值交換不是個好點子 https://goo.gl/TNVuBN 以上,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.218.129.60 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1503487464.A.977.html

08/23 23:45, , 1F
tmp跟l參考到同一個list變數實體 所以會print一樣東西
08/23 23:45, 1F

08/23 23:45, , 2F
如果要觀察變化 要複製一份修改前變數 tmp = l.copy()
08/23 23:45, 2F

08/23 23:47, , 3F
在迴圈中修改容器內容可能會使iterator失效
08/23 23:47, 3F

08/23 23:47, , 4F
但你是用index方式 理論上不會有問題
08/23 23:47, 4F
文章代碼(AID): #1PdMNebt (Python)