Hướng dẫn how do you make a copy in python? - làm thế nào để bạn tạo một bản sao trong python?

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về phương thức Danh sách Python () với sự trợ giúp của các ví dụ.

Phương thức copy() trả về một bản sao nông của danh sách.

Thí dụ

# mixed list
prime_numbers = [2, 3, 5]

# copying a list numbers = prime_numbers.copy()

print('Copied List:', numbers) # Output: Copied List: [2, 3, 5]


Sao chép () Cú pháp

Cú pháp của phương thức copy() là:

new_list = list.copy()

Sao chép () tham số

Phương thức copy() không lấy bất kỳ tham số nào.


sao chép () giá trị trả về

Phương thức copy() trả về một danh sách mới. Nó không sửa đổi danh sách ban đầu.


Ví dụ: Sao chép danh sách

# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)

Đầu ra

Copied List: ['cat', 0, 6.7]

Nếu bạn sửa đổi new_list trong ví dụ trên, my_list sẽ không được sửa đổi.


Danh sách bản sao bằng cách sử dụng =

Chúng tôi cũng có thể sử dụng toán tử

new_list = list.copy()
3 để sao chép danh sách. Ví dụ,

old_list = [1, 2, 3]
new_list = old_list

Howerver, có một vấn đề với việc sao chép danh sách theo cách này. Nếu bạn sửa đổi new_list, old_list cũng được sửa đổi. Đó là bởi vì danh sách mới đang tham khảo hoặc chỉ vào cùng một đối tượng Old_list.

old_list = [1, 2, 3]

# copy list using = new_list = old_list

# add an element to list new_list.append('a') print('New List:', new_list) print('Old List:', old_list)

Đầu ra

Old List: [1, 2, 3, 'a']
New List: [1, 2, 3, 'a']

Nếu bạn sửa đổi new_list trong ví dụ trên, my_list sẽ không được sửa đổi.

Danh sách bản sao bằng cách sử dụng = Python Shallow Copy Vs Deep Copy


Chúng tôi cũng có thể sử dụng toán tử new_list = list.copy()3 để sao chép danh sách. Ví dụ,

# shallow copy using the slicing syntax

# mixed list
list = ['cat', 0, 6.7]

# copying a list using slicing new_list = list[:]

# Adding an element to the new list new_list.append('dog') # Printing new and old list print('Old List:', list) print('New List:', new_list)

Đầu ra

Old List: ['cat', 0, 6.7]
New List: ['cat', 0, 6.7, 'dog']

Mã nguồn: lib/copy.py Lib/copy.py


Các câu lệnh gán trong Python không sao chép các đối tượng, chúng tạo ra các ràng buộc giữa mục tiêu và đối tượng. Đối với các bộ sưu tập có thể thay đổi hoặc chứa các mục có thể thay đổi, đôi khi một bản sao là cần thiết để người ta có thể thay đổi một bản sao mà không thay đổi cái kia. Mô -đun này cung cấp các hoạt động sao chép nông và sâu chung (giải thích bên dưới).

Tóm tắt giao diện:

sao chép.Copy (x) ¶copy(x)

Trả lại một bản sao nông của x.

sao chép.deepcopy (x [, memo]) ¶deepcopy(x[, memo])

Trả lại một bản sao sâu của x.

ExceptionCopy.error¶ copy.Error

Được nâng lên cho các lỗi cụ thể của mô -đun.

Sự khác biệt giữa sao chép nông và sâu chỉ có liên quan đến các đối tượng hỗn hợp (các đối tượng có chứa các đối tượng khác, như danh sách hoặc trường hợp lớp):

  • Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó (trong phạm vi có thể) chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc.

  • Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.

Hai vấn đề thường tồn tại với các hoạt động sao chép sâu mà don lồng tồn tại với các hoạt động sao chép nông:

  • Các đối tượng đệ quy (các đối tượng hợp chất, trực tiếp hoặc gián tiếp, chứa một tham chiếu đến chính chúng) có thể gây ra một vòng lặp đệ quy.

  • Bởi vì bản sao sâu sao chép mọi thứ mà nó có thể sao chép quá nhiều, chẳng hạn như dữ liệu dự định được chia sẻ giữa các bản sao.

Hàm

new_list = list.copy()
5 tránh những vấn đề này bằng cách:

  • Giữ một từ điển

    new_list = list.copy()
    6 của các đối tượng đã được sao chép trong quá trình sao chép hiện tại; và

  • Cho phép các lớp do người dùng xác định ghi đè hoạt động sao chép hoặc tập hợp các thành phần được sao chép.

Mô -đun này không sao chép các loại như mô -đun, phương thức, dấu vết ngăn xếp, khung ngăn xếp, tệp, ổ cắm, cửa sổ hoặc bất kỳ loại tương tự nào. Nó không sao chép các chức năng và các lớp (nông và sâu), bằng cách trả về đối tượng ban đầu không thay đổi; Điều này tương thích với cách chúng được xử lý bằng mô -đun

new_list = list.copy()
7.

Các bản sao nông của từ điển có thể được thực hiện bằng cách sử dụng

new_list = list.copy()
8 và các danh sách bằng cách gán một lát của toàn bộ danh sách, ví dụ,
new_list = list.copy()
9.

Các lớp có thể sử dụng các giao diện tương tự để kiểm soát sao chép mà họ sử dụng để kiểm soát Pickling. Xem mô tả của mô -đun

new_list = list.copy()
7 để biết thông tin về các phương pháp này. Trên thực tế, mô -đun
# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)
1 sử dụng các hàm Pickle đã đăng ký từ mô -đun
# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)
2.

Để một lớp xác định triển khai bản sao của riêng mình, nó có thể xác định các phương thức đặc biệt

# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)
3 và
# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)
4. Cái trước được gọi để thực hiện hoạt động sao chép nông; Không có lập luận bổ sung được thông qua. Cái sau được gọi để thực hiện hoạt động sao chép sâu; Nó được thông qua một đối số, từ điển
new_list = list.copy()
6. Nếu việc triển khai
# mixed list
my_list = ['cat', 0, 6.7]

# copying a list new_list = my_list.copy()

print('Copied List:', new_list)
4 cần tạo một bản sao sâu của một thành phần, nó sẽ gọi hàm
new_list = list.copy()
5 với thành phần là đối số đầu tiên và từ điển ghi nhớ là đối số thứ hai. Từ điển ghi nhớ nên được coi là một đối tượng mờ đục.

Xem thêm

Mô -đun
new_list = list.copy()
7

Thảo luận về các phương pháp đặc biệt được sử dụng để hỗ trợ truy xuất và phục hồi trạng thái đối tượng.

Copy () có nghĩa là gì trong Python?

Bạn có thể sao chép danh sách trong Python bằng phương thức Copy (), cắt, phương thức danh sách () và khả năng hiểu danh sách.Phương thức Copy () là cách trực tiếp nhất để sao chép danh sách Python.the most direct way of copying a Python list.

Làm cách nào để tạo một bản sao của một bộ trong Python?

Phương thức Copy () trong Python trả về một bản sao của bộ.Chúng ta có thể sao chép một tập hợp sang bộ khác bằng toán tử =, tuy nhiên việc sao chép một tập hợp sử dụng = toán tử có nghĩa là khi chúng ta thay đổi bộ mới, bộ sao chép cũng sẽ được thay đổi, nếu bạn không muốn hành vi này thì hãy sử dụng phương thức Copy ()thay vì = toán tử.. We can copy a set to another set using the = operator, however copying a set using = operator means that when we change the new set the copied set will also be changed, if you do not want this behaviour then use the copy() method instead of = operator.

Tại sao COPY () cần thiết trong Python?

Trong trường hợp sao chép nông, một tham chiếu của một đối tượng được sao chép vào một đối tượng khác.Nó có nghĩa là bất kỳ thay đổi nào được thực hiện đối với một bản sao của một đối tượng đều phản ánh trong đối tượng gốc.Trong Python, điều này được triển khai bằng cách sử dụng hàm Copy Copy ().any changes made to a copy of an object do reflect in the original object. In python, this is implemented using the “copy()” function.

Python có làm bản sao không?

Các câu lệnh gán trong Python không sao chép các đối tượng, chúng tạo ra các ràng buộc giữa mục tiêu và đối tượng., they create bindings between a target and an object.