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