Sao chép bộ Python

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng phương thức copy[], với sự trợ giúp của các tình huống sử dụng khác nhau

ví dụ 1. Sao chép bộ Python

Trong ví dụ này, chúng ta sẽ sao chép nội dung của một tập hợp vào một biến khác

Ngoài ra, chúng tôi sẽ sửa đổi tập hợp đã sao chép và quan sát nội dung của cả tập hợp gốc và tập hợp đã sao chép

Chương trình Python

#initialize set
set_1 = {32, 56, 19}

#copy set
set_2 = set_1.copy[]

print['set 1:', set_1]
print['set 2:', set_2]

#some modifications
set_2.add[47]
print['\nafter modifications']

print['set 1:', set_1]
print['set 2:', set_2]
Chạy

đầu ra

set 1: {32, 56, 19}
set 2: {32, 56, 19}

after modifications
set 1: {32, 56, 19}
set 2: {32, 56, 19, 47}

Bộ ban đầu không thay đổi

ví dụ 2. Sao chép Đặt thành nhiều biến

Bạn có thể sao chép một tập hợp thành một hoặc nhiều biến trong một câu lệnh. Trong ví dụ này, chúng ta sẽ khởi tạo một tập hợp và sao chép nó vào hai biến

Chương trình Python

#initialize set
set_1 = {32, 56, 19}

#copy set
set_2 = set_3 = set_1.copy[]

print['set 1:', set_1]
print['set 2:', set_2]
print['set 3:', set_3]
Chạy

đầu ra

set 1: {32, 56, 19}
set 2: {32, 56, 19}
set 3: {32, 56, 19}

Tóm lược

Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách sử dụng phương thức copy[] của set class trong Python, với sự trợ giúp của các chương trình ví dụ chi tiết

Một cách tiếp cận đơn giản để có được một bản sao nông của tập hợp sử dụng chức năng tích hợp sẵn copy[]. Đây là một ví dụ về việc sử dụng nó

1

2

3

4

5

6

7

if __name__ == '__main__'.

 

    nums = {1, 2, 3, 4, 5}

 

    bản sao = nums. bản sao[]

    in[bản sao]

 

Tải xuống Chạy mã

2. Sử dụng Set constructor

Một tùy chọn khác là sử dụng hàm tạo set[] để sao chép một tập hợp. Điều này được thể hiện dưới đây

1

2

3

4

5

6

7

if __name__ == '__main__'.

 

    nums = {1, 2, 3, 4, 5}

 

    nhân bản = đặt[nums]

    in[bản sao]

 

Tải xuống Chạy mã

3. Sử dụng chức năng copy.copy[]

Mô-đun sao chép cung cấp các quy trình cho các hoạt động sao chép nông và sâu. Một bản sao nông của tập hợp có thể được tạo bằng cách sử dụng copy.copy[] và một bản sao sâu có thể được tạo bằng hàm copy.deepcopy[]. Ví dụ,

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 cần có một bản sao để người dùng có thể thay đổi một bản sao mà không cần thay đổi bản kia. Mô-đun này cung cấp các thao tác sao chép nông và sâu chung chung [được giải thích bên dưới]

Tóm tắt giao diện

sao chép. bản sao[x]

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

sao chép. deepcopy[x[ , ghi nhớ]]

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

ngoại lệ sao chép. Lỗi

Tăng cho các lỗi mô-đun cụ thể

Sự khác biệt giữa sao chép nông và sâu chỉ liên quan đến các đối tượng phức hợp [các đối tượng chứa các đối tượng khác, như danh sách hoặc thể hiện của lớp]

  • Một bản sao nông xây dựng một đối tượng ghép mới và sau đó [trong phạm vi có thể] chèn vào đó các tham chiếu tới 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 phức hợp mới và sau đó, theo cách đệ quy, chèn các bản sao của các đối tượng được tìm thấy trong bản gốc vào đó.

Hai vấn đề thường tồn tại với thao tác sao chép sâu mà không tồn tại với thao tác sao chép nông

  • Các đối tượng đệ quy [các đối tượng phức hợp, trực tiếp hoặc gián tiếp, chứa tham chiếu đến chính chúng] có thể gây ra 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 được chia sẻ giữa các bản sao

Chức năng tránh những vấn đề này bằng cách

  • giữ một từ điển memo các đối tượng đã được sao chép trong quá trình sao chép hiện tại;

  • cho phép các lớp do người dùng định nghĩa 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ó thực hiện “sao chép” các hàm và lớp [nông và sâu], bằng cách trả lại đối tượng ban đầu không thay đổi;

Bản sao nông của từ điển có thể được tạo bằng cách sử dụng và của danh sách bằng cách chỉ định một phần của toàn bộ danh sách, ví dụ: copied_list = original_list[:]

Các lớp có thể sử dụng cùng một giao diện để kiểm soát việc sao chép mà chúng sử dụng để kiểm soát việc tẩy. Xem mô tả của mô-đun để biết thông tin về các phương pháp này. Trên thực tế, mô-đun sử dụng các hàm pickle đã đăng ký từ mô-đun

Để một lớp định nghĩa việc triển khai bản sao của riêng mình, nó có thể định nghĩa các phương thức đặc biệt __copy__[]deepcopy[]0. Cái trước được gọi để thực hiện thao tác sao chép nông; . Cái sau được gọi để thực hiện thao tác sao chép sâu; . Nếu việc triển khai deepcopy[]0 cần tạo một bản sao sâu của một thành phần, thì nó sẽ gọi hàm với thành phần đó làm đối số đầu tiên và từ điển ghi nhớ làm đối số thứ hai. Từ điển ghi nhớ nên được coi là một đối tượng mờ đục

Bạn có thể sao chép một bộ bằng Python không?

đặt bản sao [] trong python . Nếu chúng tôi sử dụng “=” để sao chép một bộ sang một bộ khác, khi chúng tôi sửa đổi trong bộ đã sao chép, các thay đổi cũng được phản ánh trong bộ ban đầu. The copy[] method returns a shallow copy of the set in python. If we use “=” to copy a set to another set, when we modify in the copied set, the changes are also reflected in the original set.

Bộ sao chép là gì?

Trong quá trình sao chép dữ liệu, dữ liệu được sao chép từ ổ đĩa nguồn sang một hoặc nhiều ổ đĩa đích, tùy thuộc vào loại phiên. Tập đĩa nguồn và tập đĩa đích chứa các bản sao của cùng một dữ liệu được gọi chung là tập hợp bản sao.

Copy[] hoạt động như thế nào trong Python?

Phương thức copy[] của Python tạo một bản sao của danh sách hiện có . Phương thức copy[] được thêm vào cuối đối tượng danh sách và do đó nó không chấp nhận bất kỳ tham số nào. copy[] trả về một danh sách mới. Python bao gồm một chức năng tích hợp để hỗ trợ tạo một bản sao nông của danh sách. sao chép[].

copy[] trong danh sách Python là gì?

Bản sao Python. copy[] đã tạo một bản sao thực sự của danh sách gốc . Tuy nhiên, nó vẫn là một bản sao nông và các danh sách lồng nhau đề cập chính xác đến cùng một vị trí bộ nhớ. Nói cách khác, bản. copy[] chỉ tạo các bản sao cấp cao nhất và không sao chép các đối tượng lồng nhau.

Chủ Đề