l1 = [1, 2, 3]l2 =l1
print(l2)
可變資料型別,賦值複製後,更改其中乙個,另乙個將會發生改變。
為解決這一問題,需要對資料執行深淺copy
l1 = [1, 2, 3]l2 =l1.copy()'a
(l1)
print(l2)
使用copy方法,實現了列表的複製,但是對孫子輩,重孫輩無效
#copy方法可以保證第一層的資料新增後不變
#但是第二層資料新增,同樣影響到copy後的列表
l1 = [1, 2, [4, 5, 6], 3]
l2 =l1.copy()'a
(id(l1), id(l2))
(l1, l2)
第二層'
(id(l1), id(l2))
print(l1, l2) #
[1, 2, [4, 5, 6, '第二層'], 3, 'a'] [1, 2, [4, 5, 6, '第二層'], 3]
print(id(l1[2]), id(l2[2])) #
3015533617800 3015533617800
從以上命令,可以看出,第二層依然指向相同的記憶體
importcopy
l1 = [1, 2, [4, 5, 6,[12,3,4]], 3]
l2 =copy.deepcopy(l1)
print("
第一層新增值")
'a')
(id(l1), id(l2))
(l1, l2)
print('
第二層新增值')
第二層'
(id(l1), id(l2))
print(l1, l2) #
[1, 2, [4, 5, 6, [12, 3, 4], '第二層'], 3, 'a'] [1, 2, [4, 5, 6, [12, 3, 4]], 3]
print(id(l1[2]), id(l2[2])) #
3015535702088 3015535594056
第三層'
)print(id(l1[2][3]), id(l2[2][3])) #
3015535842120 3015535842440
print(l1,l2) #
[1, 2, [4, 5, 6, [12, 3, 4, '第三層'], '第二層'], 3, 'a'] [1, 2, [4, 5, 6, [12, 3, 4]], 3]
深copy後,列表所有的層級都分配獨立的記憶體,不在共享
python全棧闖關 6 小知識點總結
python2 print abc 返回乙個列表 range 返回乙個生成器值,不是list。每次只生成乙個值,避免暫用很大的記憶體 xrange 生成器 輸入 raw input python3 print abc 返回乙個迭代值,需要生成列表就需要使用list range range input...
python全棧要學什麼 python全棧學習路線
i程式設計客棧t行業,技術要比學歷 年齡 從業經驗更為重要,技術水平直接決定就業薪資,想要學好python,首先要先了解精通python語言基礎 python web開發 python爬蟲 python資料分析這四大方面。全棧即指的是全棧工程師,指掌握多種技能,並能利用多種技能獨立完成產品的人。就是...
python全棧 類 物件
類名推薦用駝峰命名 類體 在定義時就會執行,在例項化時只自動執行 init 類中存放的是物件共有的資料和功能,訪問位址都一樣 class student 記錄有多少例項化物件 count 0 init 內存放是為物件初始化屬性的功能,但是可以存放任意 想要在類呼叫時就立刻執行的 def init s...