我在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