50, 如何创建一个二维数组?

c语言等创建二维数组非常方便,在python中如何创建二维数组呢?

在Python中没有内置的数组类型,通常可以用列表来替代数组功能。一维我们可以这样来 创建:

a = list(range(4))

该代码创建了一个列表,列表长度为4,并赋值为0到3.

如何创建二维的列表呢,我们首先可能想到的是列表乘法,例如:

>>> a = [list(range(4))]*3
>>> a
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

我们输出a, 得到的确实也是一个二维的列表,但如何对二维列表进行赋值,例如:

>>> a[1][1] = 100
>>> a
[[0, 100, 2, 3], [0, 100, 2, 3], [0, 100, 2, 3]]

我们发现一次修改已经改动了3个地方,这是因为在乘法复制时,对象没有复制,只复制 了引用,都指向了同一个对象。因此我们不能通过这个方法来创建二维数组。

下面语句创建了一个二维列表,就相当于一个二维数组。

>>>a = [ [1]*4 for i in range(3) ]
>>>a
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>> a[1][1] = 100
>>> a
[[1, 1, 1, 1], [1, 100, 1, 1], [1, 1, 1, 1]]

这是一个列表推导式,生成长度为3的列表,它的元素是一个长度为4的列表, 每一个元素内容都为1。它创建了一个 4 x 3 的二维列表。