python list指針中被的一些小技巧

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也是一樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章