Helpex - Trao đổi & giúp đỡ Đăng nhập
54

Tôi muốn sao chép một danh sách 2D để nếu tôi sửa đổi một danh sách, danh sách kia sẽ không bị sửa đổi.

Đối với danh sách một chiều, tôi chỉ làm như sau:

a = [1, 2]
b = a[:]

Và bây giờ nếu tôi sửa đổi b, akhông được sửa đổi.

Nhưng điều này không hoạt động đối với danh sách hai chiều:

a = [[1, 2],[3, 4]]
b = a[:]

Nếu tôi sửa đổi b, cũng asẽ được sửa đổi.

Làm cách nào để sửa lỗi này?

54 hữu ích 5 bình luận 34k xem chia sẻ
76

Để có giải pháp tổng quát hơn hoạt động bất kể số thứ nguyên, hãy sử dụng copy.deepcopy():

import copy
b = copy.deepcopy(a)
76 hữu ích 5 bình luận chia sẻ
66
b = [x[:] for x in a]
66 hữu ích 5 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python list copy deep-copy , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading