在Python中,列表變量可以直接進行賦值,如下:
a = [1,2,3,4] b = a print(b)
結果會顯示 [1,2,3,4]
字符串也是一樣的可以賦值,但是Python中並不是將列表或字符串復制一份再傳給新變量,而是傳地址
例如:
a = [1,2,3,4] b = a a[0] = 5 print(a) print(b)
結果會顯示
[5,2,3,4]
[5,2,3,4]
可以看到 b 會隨着 a 改變
如果不知道這個性質的話,寫程序時會出現莫名其妙的bug
如果要復制一份 a 傳給 b ,可以用以下代碼
a = [1,2,3,4] b = a[:] a[0] = 5 print(a) print(b)
此時輸出為
[5,2,3,4]
[1,2,3,4]
這種方法就是將 a 復制了一份傳給 b
當然,基本只在列表中用到,字符串是不允許修改的,也就不會出現上面的問題
a = 'hello' a[0] = 'H' #這里將會報錯,字符串不允許修改