Trong Python, toán tử gán không tạo object mới, chỉ đặt tên khác cho object đã có. Xác minh bằng id():
>>> L1 = [1,2,3,4] >>> L2 = L1 >>> id(L1) 185117137928 >>> id(L2) 185117137928
Để thực sự copy list, dùng các phương pháp sau:
1. Toán tử slice [:]
>>> L1 = [1,2,3,4] >>> L2 = L1[:] >>> id(L1), id(L2) (185117025160, 185117171592) # khác nhau
2. Hàm built-in list()
>>> L1 = [1,2,3,4] >>> L2 = list(L1) >>> id(L1), id(L2) (185117295816, 185117209352)
3. Module copy: shallow copy và deep copy
Shallow copy: list con copy bằng tham chiếu. Deep copy: copy lồng nhau (nested copying).
>>> import copy >>> L1 = [1,2,3,4] >>> L2 = copy.copy(L1) # shallow copy >>> L3 = copy.deepcopy(L1) # deep copy >>> id(L1), id(L2), id(L3) (185117025160, 185117295880, 185117304328)