python list型別複製(傳值,不傳值)

2021-08-13 14:10:36 字數 640 閱讀 9972

python 函式傳遞 可變型別的變數時 直接傳遞傳過去的 是位址 假如傳遞的變數是 l(l是list 型別),在 函式體內部 如果出現直接複製,複製的也是位址。 舉一下我碰到的問題

def

warshall

(l,n):

#進行閉包運算 warshall演算法 引數:要閉包運算的矩陣,矩陣的行列數

f=lfor c in range(n):

i=for r in range(n):

if f[r][c]!=0:

for j in i:

l1=chouqujvzhendehang(f,j,n)

l2=chouqujvzhendehang(f,c,n)

s=jvzhenhangluojijia(l1,l2,n)

f[j]=s

return f

f=l

這句話,是直接把 l的位址給f 也就是 對f做修改的同時也會修改l。

我是不想修改l的 (不然我幹嘛要複製,,,)

然後我就從網上找到了乙個解決辦法

f=l[:]

這樣寫 就解決了 至於這個問題的底層原理,還有 為什麼 ,作為初學者 我現在也不知道 只是想把我碰到的這個問題記一下,感覺挺重要的。

python list 複製拷貝問題

大概python繞不開這個小小的問題。很簡單不過還是記錄一下吧。my list new list my list這樣的操作並不會獲得乙個my list的副本,而是會讓new list也 指向 my list,共享內容。my list 1 2 3 new list my list new list 0...

複製(基本型別和引用型別)

一 基本型別複製 可以理解為把原模板a複製在另外乙個資料夾存為b中,改變b的內容不影響a的內容。舉例如下 var num1 12 var num2 num1 num2 13 console.log num1 輸出為12,不受num2的影響二 引用型別複製 可以理解為兩個都指向同乙個位址,乙個變數改變...

void param型別變數傳值

因為在rt thread中,執行緒引數傳遞實際上傳遞的是乙個指標,當有多個引數需要傳遞的時候,就可以使用結構體對引數進行傳遞。spdx license identifier apache 2.0 change logs date author notes 2020 02 21 shineroyal ...