Python - Copy Arrays

Trong Python, việc sao chép một mảng đề cập đến quá trình tạo ra một mảng mới chứa tất cả các phần tử của mảng gốc. Hoạt động này có thể được thực hiện bằng cách sử dụng toán tử gán (=) và phương thức deepcopy(). Trong chương này, chúng ta sẽ thảo luận về cách copy an array object to another . Nhưng trước khi đi vào chi tiết, hãy cùng thảo luận ngắn gọn về các mảng.

Các kiểu chuỗi tích hợp sẵn của Python, tức là list , tuple string , là các tập hợp được lập chỉ mục của các mục. Tuy nhiên, không giống như mảng trong C/C++, Java, v.v., chúng không đồng nhất, có nghĩa là các phần tử trong các loại tập hợp này có thể thuộc các kiểu khác nhau. Mô-đun mảng của Python giúp bạn tạo ra các đối tượng tương tự như mảng trong Java.

Python arrays có thể là kiểu chuỗi, số nguyên hoặc số thực. Hàm tạo lớp mảng được sử dụng như sau −

import array
obj = array.array(typecode[, initializer])

Trong đó, typecode có thể là một hằng ký tự đại diện cho kiểu dữ liệu.

Copy Arrays Using Assignment Operator

Chúng ta có thể gán một mảng cho một mảng khác bằng cách sử dụng toán tử gán (=). Tuy nhiên, việc gán như vậy không tạo ra một mảng mới trong bộ nhớ. Thay vào đó, nó tạo ra một tham chiếu mới đến cùng một mảng.

Example

Trong ví dụ sau, chúng ta đang sử dụng toán tử gán để sao chép mảng trong Python.

import array as arr
a = arr.array('i', [110, 220, 330, 440, 550])
b = a
print("Copied array:",b)
print (id(a), id(b))

Nó sẽ tạo ra output

Copied array: array('i', [110, 220, 330, 440, 550])
134485392383792 134485392383792

Kiểm tra id() của cả a và b. Giá trị id giống nhau xác nhận rằng việc gán đơn giản không tạo ra bản sao. Vì "a" và "b" tham chiếu đến cùng một đối tượng mảng, bất kỳ thay đổi nào trong mảng "a" cũng sẽ phản ánh trong "b".

a[2] = 10
print (a,b)

Nó sẽ tạo ra output

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 10, 440, 550])

Copy Arrays Using Deep Copy

Để tạo một bản sao vật lý khác của một mảng, chúng ta sử dụng một mô-đun khác trong thư viện Python, có tên là copy và sử dụng hàm deepcopy() trong mô-đun này. Một bản sao sâu tạo ra một đối tượng phức hợp 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.

Example

Ví dụ dưới đây minh họa cách sao chép mảng trong Python −

import array as arr
import copy
a = arr.array('i', [110, 220, 330, 440, 550])
b = copy.deepcopy(a)
print("Copied array:",b)

Khi thực thi, nó sẽ tạo ra output

Copied array: array('i', [110, 220, 330, 440, 550])

Bây giờ hãy kiểm tra id() của cả "a" và "b". Bạn sẽ thấy rằng các id là khác nhau.

print (id(a), id(b))

Nó sẽ tạo ra output

2771967069936 2771967068976

Điều này chứng minh rằng một đối tượng mới "b" được tạo ra, là một bản sao thực sự của "a". Nếu chúng ta thay đổi một phần tử trong "a", điều đó sẽ không được phản ánh trong "b".

a[2]=10
print (a,b)

Nó sẽ tạo ra output

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 330, 440, 550])