我在Python中初始化二維數組時遇到了問題。我想一個6x6的陣列,我做在Python中初始化二維數組
arr = [[None]*6]*6
但是當我做:
>>> 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]]
通知我只設置1項,並在所有行的「複製」。怎麼了?我認爲它與它引用相同的列表有關,但我該如何解決這個問題?
我想通
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)
的作品,但似乎很長,只是初始化一個空的6x6陣列,如果我想要一個10000x10000陣列,這將是非常低效的?
UPDATE
可我也初始化二維數組的字典?我有一本字典,如:
algos = { "FIFO": ..., "LRU": ..., "Random": ... }
我想初始化像下面的字典:
algoData = { "FIFO": 2D arr, "LRU": 2D arr, "Random": 2D arr }
我想存儲用於matplotlib的數據(一個3D表面圖) – 2012-03-31 08:20:32
在這種情況下,我肯定會推薦numpy。如果你想看一個示例,它用在[這個例子](http://matplotlib.sourceforge.net/examples/animation/simple_3danim.html)中。節省工作;這是一個很棒的包裝。 – Cameron 2012-03-31 08:24:07
所以我需要的線將只是'lineData = np.empty((dims,length))'? – 2012-03-31 10:37:06