【Python】Python3 List 列表複製
阿新 • • 發佈:2019-01-31
程式碼:
a = [1,2,3]
b = a
c = []
c = a
d = a[:]
a,b,c,d
print("a,b,c,d:",a,b,c,d)
print("id(a),id(b),id(c),id(d):",id(a),id(b),id(c),id(d))
b[0] = "b"
print("a,b,c,d:",a,b,c,d)
print("id(a),id(b),id(c),id(d):",id(a),id(b),id(c),id(d))
c[0] = "c"
print("a,b,c,d:",a,b,c,d)
print("id(a),id(b),id(c),id(d):" ,id(a),id(b),id(c),id(d))
d[0] = "d"
print("a,b,c,d:",a,b,c,d)
print("id(a),id(b),id(c),id(d):",id(a),id(b),id(c),id(d))
程式碼輸出:
a,b,c,d: [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3]
id(a),id(b),id(c),id(d): 2782355445192 2782355445192 2782355445192 2782355356936
a,b,c,d: ['b', 2, 3] ['b', 2, 3] ['b', 2, 3] [1, 2, 3]
id(a),id(b),id(c),id(d): 2782355445192 2782355445192 2782355445192 2782355356936
a,b,c,d: ['c', 2, 3] ['c', 2, 3] ['c', 2, 3] [1, 2, 3]
id(a),id(b),id(c),id(d): 2782355445192 2782355445192 2782355445192 2782355356936
a,b,c,d: ['c', 2, 3] ['c', 2, 3] ['c', 2, 3] ['d', 2, 3]
id(a),id(b),id(c) ,id(d): 2782355445192 2782355445192 2782355445192 2782355356936
可以看到a b c三個是同一id值,當改變當中任一列表元素的值後,三者會同步改變。
但d的元素值不會變,改變d的元素值其它三個變數內的元素值也不會變。
從a b c d的id值來看,a b c地址全一樣,唯有d分配了新地址。
所以一般情況下想複製得到一個新列表並改變新列表內元素而不影響原列表,可以採用d的賦值方式。
這只是針對這種比較單一的普通列表。