Tôi gặp sự cố khi khởi tạo mảng 2D trong python. Tôi muốn có một mảng 6x6, tôi đã làmKhởi tạo mảng 2D trong Python
arr = [[None]*6]*6
Nhưng khi tôi làm:
>>> arr[1][2]=10
>>> arr
[[None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None]]
Thông báo tôi chỉ cần đặt 1 mục, và nó "sao chép" trên tất cả các hàng. Chuyện gì vậy? Tôi nghĩ rằng nó đã làm với tham chiếu của nó cùng một danh sách, nhưng làm thế nào để sửa lỗi này?
I figured
for key, _ in algos.items():
algoData[key] = []
for i in range(0,6):
algoData[key].append([])
for j in range(0,6):
algoData[key][i].append(None)
công trình, nhưng có vẻ như thời gian để chỉ khởi tạo một mảng 6x6 trống, những gì nếu tôi muốn có một mảng 10000x10000, nó sẽ rất không hiệu quả?
CẬP NHẬT
Tôi có thể cũng khởi tạo một từ điển của mảng 2D? Tôi có một cuốn từ điển như:
algos = { "FIFO": ..., "LRU": ..., "Random": ... }
Tôi muốn khởi tạo một từ điển như dưới đây:
algoData = { "FIFO": 2D arr, "LRU": 2D arr, "Random": 2D arr }
Tôi muốn lưu trữ dữ liệu để sử dụng với matplotlib (một ô bề mặt 3D) –
Trong trường hợp đó, tôi chắc chắn sẽ đề nghị gọn gàng. Nó được sử dụng trong [ví dụ này] (http://matplotlib.sourceforge.net/examples/animation/simple_3danim.html), nếu bạn muốn xem mẫu. Tiết kiệm cho mình công việc; nó là một gói tuyệt vời. – Cameron
Vì vậy, dòng tôi cần sẽ chỉ là 'lineData = np.empty ((dims, length))'? –