Hãy cho chúng tôi xem cách sao chép mảng trong Python. Có 3 cách để sao chép mảng: & nbsp;
- Chỉ đơn giản là sử dụng toán tử chuyển nhượng.
- Bản sao nông
- Sao chép sâu
Gán mảng
Chúng ta có thể tạo một bản sao của một mảng bằng cách sử dụng toán tử gán [=]. & Nbsp;
Cú pháp: & nbsp;
new_arr = old_ arr
Trong Python, các câu lệnh gán 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. Khi chúng ta sử dụng = người dùng toán tử nghĩ rằng điều này tạo ra một đối tượng mới; Vâng, nó không có. Nó chỉ tạo ra một biến mới chia sẻ tham chiếu của đối tượng gốc.
Example:
Python3
from
numpy
import
________ 7 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
arr1
=
117854800 117854800 [2 7 9 4] [2 7 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]1
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]3
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]5__12
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]1
121258976 125714048 [2 7 9 4] [2 6 9 4]2
121258976 125714048 [2 7 9 4] [2 6 9 4]3
=
121258976 125714048 [2 7 9 4] [2 6 9 4]5
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]1
121258976 125714048 [2 7 9 4] [2 6 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]0
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]1
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]22
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]6
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]8
Đầu ra: & nbsp;
117854800 117854800 [2 7 9 4] [2 7 9 4]
Chúng ta có thể thấy rằng cả hai mảng tham chiếu cùng một đối tượng. & Nbsp;
Bản sao nông
Sao chép sâuview[] function.
Gán mảng
Chúng ta có thể tạo một bản sao của một mảng bằng cách sử dụng toán tử gán [=]. & Nbsp;
Cú pháp: & nbsp;
Trong Python, các câu lệnh gán 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. Khi chúng ta sử dụng = người dùng toán tử nghĩ rằng điều này tạo ra một đối tượng mới; Vâng, nó không có. Nó chỉ tạo ra một biến mới chia sẻ tham chiếu của đối tượng gốc.
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]1
121258976 125714048 [2 7 9 4] [2 6 9 4]2
from
numpy
import
________ 7 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]1
121258976 125714048 [2 7 9 4] [2 6 9 4]9
arr1
=
117854800 117854800 [2 7 9 4] [2 7 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]1
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]3
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]5__12
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]6
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]8
121258976 125714048 [2 7 9 4] [2 6 9 4]3
=
121258976 125714048 [2 7 9 4] [2 6 9 4]5
Sao chép sâu
Gán mảngcopy[] function.
Python3
Cú pháp: & nbsp;
Trong Python, các câu lệnh gán 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. Khi chúng ta sử dụng = người dùng toán tử nghĩ rằng điều này tạo ra một đối tượng mới; Vâng, nó không có. Nó chỉ tạo ra một biến mới chia sẻ tham chiếu của đối tượng gốc.
from
numpy
import
________ 7 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
arr1
=
117854800 117854800 [2 7 9 4] [2 7 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]1
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]3
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]5__12
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]1
121258976 125714048 [2 7 9 4] [2 6 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]3
=
121258976 125714048 [2 7 9 4] [2 6 9 4]5
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]6
117854800 117854800 [2 7 9 4] [2 7 9 4]9
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]8
Đầu ra: & nbsp;
121258976 125714048 [2 7 9 4] [2 6 9 4]
Chúng ta có thể thấy rằng cả hai mảng tham chiếu cùng một đối tượng. & Nbsp;
Một bản sao nông có nghĩa là xây dựng một đối tượng bộ sưu tập mới và sau đó điền nó với các tham chiếu đến các đối tượng con được tìm thấy trong bản gốc. Quá trình sao chép không tái phát và do đó won đã tạo ra các bản sao của các đối tượng con. Trong trường hợp sao chép nông, một tham chiếu của đối tượng được sao chép trong 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 đối tượng đều phản ánh trong đối tượng gốc. Chúng tôi sẽ thực hiện bản sao nông bằng hàm xem [].
Ví dụ: & nbsp;
Python3
Python3
from
numpy
import
________ 7 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
arr1
=
117854800 117854800 [2 7 9 4] [2 7 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]1
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]3
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]5__12
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]20
117854800 117854800 [2 7 9 4] [2 7 9 4]21
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]25
117854800 117854800 [2 7 9 4] [2 7 9 4]26
121258976 125714048 [2 7 9 4] [2 6 9 4]3
=
import
0Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]0
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]1
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]2
=
________ 34 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;Lần này mặc dù 2 mảng tham chiếu các đối tượng khác nhau, nhưng vẫn thay đổi giá trị của một, giá trị của một mảng khác cũng thay đổi.
Bản sao sâu là một quá trình trong đó quá trình sao chép xảy ra đệ quy. Nó có nghĩa là đầu tiên xây dựng một đối tượng bộ sưu tập mới và sau đó chiếm giữ nó một cách đệ quy với các bản sao của các đối tượng con được tìm thấy trong bản gốc. Trong trường hợp sao chép sâu, một bản sao của đố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 đối tượng không phản ánh trong đối tượng gốc. Chúng tôi sẽ triển khai bản sao sâu bằng hàm Copy [].
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]56
117854800 117854800 [2 7 9 4] [2 7 9 4]57
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]20
117854800 117854800 [2 7 9 4] [2 7 9 4]21
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
117854800 117854800 [2 7 9 4] [2 7 9 4]66
117854800 117854800 [2 7 9 4] [2 7 9 4]26
Is
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]33
117854800 117854800 [2 7 9 4] [2 7 9 4]34
117854800 117854800 [2 7 9 4] [2 7 9 4]35
117854800 117854800 [2 7 9 4] [2 7 9 4]36
117854800 117854800 [2 7 9 4] [2 7 9 4]37
117854800 117854800 [2 7 9 4] [2 7 9 4]38
117854800 117854800 [2 7 9 4] [2 7 9 4]33
117854800 117854800 [2 7 9 4] [2 7 9 4]40
117854800 117854800 [2 7 9 4] [2 7 9 4]35
117854800 117854800 [2 7 9 4] [2 7 9 4]36
117854800 117854800 [2 7 9 4] [2 7 9 4]37
117854800 117854800 [2 7 9 4] [2 7 9 4]44
117854800 117854800 [2 7 9 4] [2 7 9 4]91
=
117854800 117854800 [2 7 9 4] [2 7 9 4]93
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]95
117854800 117854800 [2 7 9 4] [2 7 9 4]96
117854800 117854800 [2 7 9 4] [2 7 9 4]97
117854800 117854800 [2 7 9 4] [2 7 9 4]98
=
____9 121258976 125714048 [2 7 9 4] [2 6 9 4]01
121258976 125714048 [2 7 9 4] [2 6 9 4]02
117854800 117854800 [2 7 9 4] [2 7 9 4]13
121258976 125714048 [2 7 9 4] [2 6 9 4]04
=
121258976 125714048 [2 7 9 4] [2 6 9 4]06
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]1
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]1____12
121258976 125714048 [2 7 9 4] [2 6 9 4]11
121258976 125714048 [2 7 9 4] [2 6 9 4]12
121258976 125714048 [2 7 9 4] [2 6 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]71
117854800 117854800 [2 7 9 4] [2 7 9 4]7
117854800 117854800 [2 7 9 4] [2 7 9 4]2
121258976 125714048 [2 7 9 4] [2 6 9 4]17
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]3
121258976 125714048 [2 7 9 4] [2 6 9 4]12
121258976 125714048 [2 7 9 4] [2 6 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]71
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]4
117854800 117854800 [2 7 9 4] [2 7 9 4]2
121258976 125714048 [2 7 9 4] [2 6 9 4]25
117854800 117854800 [2 7 9 4] [2 7 9 4]2
117854800 117854800 [2 7 9 4] [2 7 9 4]5
121258976 125714048 [2 7 9 4] [2 6 9 4]28
117854800 117854800 [2 7 9 4] [2 7 9 4]13
117854800 117854800 [2 7 9 4] [2 7 9 4]9
121258976 125714048 [2 7 9 4] [2 6 9 4]0
121258976 125714048 [2 7 9 4] [2 6 9 4]32
121258976 125714048 [2 7 9 4] [2 6 9 4]33
Output:
Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy of original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After modification Original [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Copy [[3, 2, 1], [6, 5, 4], [9, 8, 7]] Rotated image [[3, 6, 9], [2, 5, 8], [1, 4, 7]]