Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để sao chép hoặc sao chép một danh sách bằng Python?

Trong Python, toán tử gán không tạo một đối tượng mới, thay vào đó nó đặt tên khác cho đối tượng đã tồn tại. Điều này có thể được xác minh bằng hàm id ()

>>> L1 = [1,2,3,4]
>>> L2 = L1
>>> id(L1)
185117137928
>>> id(L2)
185117137928

Để thực sự sao chép một danh sách, có thể sử dụng các phương pháp sau.

Toán tử lát cắt:Hai toán hạng của toán tử lát cắt là chỉ số của điểm bắt đầu và kết thúc của lát cắt. Nếu không được sử dụng rõ ràng, cả hai đều được mặc định là bắt đầu cuối chuỗi. Chúng ta có thể tận dụng tính năng này

>>> L1 = [1,2,3,4]
>>> L2 = L1[:]
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117025160
>>> id(L2)
185117171592

Một phương pháp khác là sử dụng phương thức list () tích hợp sẵn

>>> L1 =[ 1,2,3,4]
>>> L2 = list(L1)
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117295816
>>> id(L2)
185117209352

Mô-đun sao chép của thư viện chuẩn của Python chứa các hàm cho bản sao sâu và nông của các đối tượng. Trong khi bản sao sâu là sao chép lồng nhau, trong bản sao nông, danh sách bên trong chỉ được sao chép bằng tham chiếu.

>>> import copy
>>> L1 = [1,2,3,4]
>>> L2 = copy.copy(L1)
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117025160
>>> id(L2)
185117295880
>>> L3=copy.deepcopy(L1)
>>> L3
[1, 2, 3, 4]
>>> id(L3)
185117304328