Tại sao dùng biến để thay thế nhưng ma trận gốc vẫn bị thay đổi

Bài toán đặt ra là đánh dấu các số chẵn trong ma trận bằng <>
Em dùng biến copy để đánh dấu (mục đích là để dành matrix chứa toàn bộ int để dùng lần sau)
Nhung mà khi đổi giá trị trong copy thành string thì giá trị trong matrix cũng đổi theo
Mọi người giải thích giúp ạ
image

copy = matrix chỉ là swallow copy thôi, không phải deep copy nên copy không hoàn toàn tách biệt hẳn với matrix ban đầu.

3 Likes

Hành động gán biến copy = matrix chỉ là đặt thêm tên mới cho vùng nhớ thôi. Nên mọi thao tác với ma trận copy cũng thay đổi ma trận matrix.
Tương tự như bạn đặt thêm biệt danh cho chính mình vậy. Người ta nhắc đến biệt danh mới hay tên thật của bạn thì bạn vẫn là bạn.

3 Likes

Dùng cách gán biến của các ngôn ngữ khác áp dụng qua Python chỗ này là… banh xác ngay và luôn.

Muốn nó tạo ra một bản sao thì phải dùng copy

2 Likes

Em hiểu rồi, cảm ơn mọi người ạ

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?