python list 交換賦值的問題


今天寫程序的時候總是和自己預想的結果不一致,最終定位到這行代碼。

情況如下:

先定義一個list

lis = [4,1,3,1,3,5,5]

 

設定 i = 0

 

那么這個語句之后 lis 會變成什么樣

 

lis[i], lis[lis[i]] = lis[lis[i]], lis[i]

 

開始我以為 lis[i] = 4

 

所以 相當於 list[0], list[4] = list[4], list[0]

 

lis 會變成 

[3, 1, 3, 1, 4, 5, 5]

 

但是!! 結果是這樣 

[3, 1, 3, 4, 3, 5, 5]

 

結果可以看出 lis[i] = lis[lis[i]] 這條成功賦值了

 

但是 lis[lis[i]] = lis[i] 這里有問題,應該是lis[i]此時已經變成可3 而不是原來的 4了,就是說

 

前面的賦值影響了它。

 

那么我們定義 temp = list[i]

 

lis[i], lis[temp] = lis[temp], lis[i]

 

結果回歸正常。

 

所以猜測是 只有當運行到賦值的那條語句時才會計算 lis[i] 這個值,並且,左邊的會比右邊的先賦值,所以才能影響到。

 

未完待續。。。等我弄明白原理回來補充

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM