Bạn nên sử dụng numpy.zeros
. Nếu đó không phải là một lựa chọn, bạn muốn phiên bản đầu tiên. Trong phiên bản thứ hai, nếu bạn thay đổi một giá trị, nó sẽ được thay đổi ở nơi khác trong danh sách - ví dụ:
>>> a = [[0]*10]*10
>>> a
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>> a[0][0] = 1
>>> a
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
Điều này là do (khi bạn đọc biểu thức từ trong ra ngoài), bạn tạo danh sách 10 số không. Sau đó, bạn tạo danh sách gồm 10 tham chiếu đến danh sách ban đầu gồm 10 số không.
Lưu ý rằng:
zeros = [ [0]*M for _ in xrange(N) ]
cũng sẽ làm việc và nó tránh được danh sách hiểu lồng nhau. Nếu numpy
không có trong bảng, đây là biểu mẫu tôi sẽ sử dụng.
Là nó thực sự cần thiết để sử dụng NumPy chỉ đơn giản cho rằng tính năng duy nhất? +1 cho phiên bản đầu tiên. – John
@johnthexiii - Có thể không. Nhưng, nếu OP muốn một mảng 2d của số không, tôi sẽ sẵn sàng để đi ra ngoài trên một chi và nói rằng mã OP có thể có thể hưởng lợi từ gumpy ở những nơi khác là tốt. – mgilson
tôi sẽ không cài đặt numpy cho chỉ zeroing danh sách;) Cảm ơn bạn đã giải thích sau, đó là những gì tôi đang tìm kiếm. – yakxxx