python中的list如果沒用好會出現莫名奇妙被修改的情況,所以單獨試了一下什麼時候是深拷貝,什麼時候是淺拷貝
#python中的重重指針需要定義清楚
#test1-----------------------
print ("-"* 20)
a = [0] * 20
b = a
b[0] = 10
b[3] = 20
print(a)
print(b)
#output:
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#直接將兩個list賦值相當於給了一個指針,修改的是同一個對象
#test2-----------------------
print ("-"* 20)
a = [0] * 20
b = a[:]
b[0] = 10
b[3] = 20
print(a)
print(b)
#output
#[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#讀取整體在賦值相當於新創建了一個對象
#test3-----------------------
print ("-"* 20)
a = [0] * 20
b = a + [2]
b[0] = 10
b[3] = 20
print(a)
print(b)
#output
#[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]
#做了增減的操作後都是重新創建了一個新的字段
#test4-----------------------
print ("-"* 20)
a = [i for i in range(10,20)]
b = a
#b[0] = 10
#b[3] = 20
print(b.append(2))
print(a)
print(b)
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100]
#[10, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100]
#append方法相當於還是在原有數據上操作不會創建新的對象,pop也是一樣