推 TuCH: 是的 tmp只是指標 tmp[:] == tmp.copy() 08/30 02:11
→ tsaiminghan: tmp[:]是淺複製(shallow copy) 08/30 22:34
推 calvinvin: 沒錯,對變數賦值時其實是將變數指向某段記憶體位址, 08/31 10:07
→ calvinvin: 例如a=[1,2,3], b=a, c=a的意思是創出一段值為[1,2,3] 08/31 10:07
→ calvinvin: 的記憶體位置,然後將a指向它,b、c則跟a也一樣指向它 08/31 10:07
→ calvinvin: 。透過a、b、c任一個變數使用method來修改[1,2,3]時, 08/31 10:07
→ calvinvin: 指向該處的a,b,c當然也就隨之而變。而賦值為list[:]時 08/31 10:07
→ calvinvin: 則是建立一個新的記憶體位址,其值為list[:],修改原 08/31 10:07
→ calvinvin: 本的list當然就不會影響到這新的、獨立的東西。 08/31 10:07
→ calvinvin: 所以你的程式碼將list[:]改成list後,跑的結果是將ans 08/31 10:10
→ calvinvin: 一直append上tmp,而這個tmp指向的值則是你最後將tmp 08/31 10:10
→ calvinvin: 給pop完的空list。 08/31 10:10
推 calvinvin: 以上是我非本科系自學新手的理解,若有觀念、名詞錯誤 08/31 10:14
→ calvinvin: 煩請大大不吝糾正,若是我自以為而沒回答的原po的問題 08/31 10:14
→ calvinvin: ,也先說抱歉@@ 08/31 10:14