PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] arry swap
作者:
suhang
(suhang)
2018-01-06 13:54:39
1)
A = [1, 3, 2]
i = 2
idx = A[i] - 1
A[i], A[idx] = A[idx], A[i]
>>> A = [1, 2, 3]
2)
A = [1, 3, 2]
i = 2
A[i], A[A[i] - 1] = A[A[i] - 1], A[i]
>>> A = [1, 3, 2]
為什麼 1)可以成功地交換 2)不行?
請大家指點迷津 謝謝
作者:
handsomeLin
(DoGLin)
2018-01-06 14:37:00
把他拆成三步看就很明顯了吧Python的swap我認為只是幫大家省略步驟而已
作者: tedwu2001
2018-01-06 19:15:00
你把i都帶進去就知道為什麼了啊喔,看錯了。抱歉unpacking先對運算式求值:A[i], A[A[i]-1] = 3, 2從左而右賦值:a[i] = 3 ( a=> [1,3,3])a[a[i] - 1] = 2 => a[3 - 1] = 2 ( a => [1, 3, 2])主要就是A[i]變了,然後求值先發生
作者: gmccntzx1 (o.O)
2018-01-06 19:56:00
我把說明弄成影片,參考
https://youtu.be/r-MffpJ5-KE
可用dis.dis()看bytecode, 而python執行的順序是由左而右,有求值的動作會先做.所以你可以試試看,改成A[A[i] - 1], A[i] = A[i], A[A[i] - 1]反而可以得到你要的結果.
作者:
ilikekotomi
(Young)
2018-01-06 21:47:00
感謝樓上兩位 今天下午也想不通
作者:
handsomeLin
(DoGLin)
2018-01-08 01:20:00
因為你temp一開始就擺錯東西了啊..第一步修改a[i]呢
繼續閱讀
[問題] Django串Paypal以外的金流
students
[問題] 如何理解python語法
liton
Fw: [心得] CentOS 7 + Anaconda 3 + Caffe 1
zxvc
[問題] 互動式網頁製作
paranoia5201
Fw: [發案] 資訊工業策進會 Python工程師 (已徵到)
mikapauli
[問題] Sequence to Sequench LSTM echo numbers
tmacfly
[問題] spyder代碼補齊問題
znmkhxrw
[問題] 套件安裝與執行在不同的資料夾
amyhua
[問題] 如何顯示欄位名稱且並存入xlsx裡面?
han999
Re: [問題] 在學習程式語言,如何做到有效率的學習
jamesxxx1997
Links
booklink
Contact Us: admin [ a t ] ucptt.com