Vì vậy, tôi đang cố tạo một danh sách lồng nhau trong Python dựa trên chiều rộng và chiều cao. Đây là những gì tôi có cho đến thời điểm này:Python - Danh sách lồng nhau động
width = 4
height = 5
row = [None]*width
map = [row]*height
Bây giờ, điều này rõ ràng là không hoàn toàn đúng. Khi in có vẻ tốt đẹp:
[[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None]]
Nhưng cố gắng để gán giá trị cho một vị trí như vậy:
map[2][3] = 'foo'
tôi nhận được:
[[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo']]
Rõ ràng điều này xảy ra bởi vì mỗi sublist thực sự là chỉ tham chiếu cùng một đối tượng, hàng, để thay đổi một, thay đổi tất cả. Vì vậy, đây là gần nhất tôi đã có!
Làm cách nào để tạo động danh sách lồng nhau? Cảm ơn!
Trong khi không phải là một bản sao chính xác, xem: http://stackoverflow.com/questions/1605024/python-using-the-multiply-operator-to -create-copy-of-objects-in-list – carl
'map()' là một hàm dựng sẵn, nó không phải là một ý tưởng tốt để ghi đè nó. Tìm một tên khác, nếu cần bạn chỉ có thể nối thêm '_'. –