Python中的二维数组

51 投票
12 回答
470736 浏览
提问于 2025-04-17 06:35

我想知道在Python中怎么声明一个二维数组。

arr = [[]]

arr[0].append("aa1")
arr[0].append("aa2")
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")

前面两个赋值都没问题。但是当我尝试执行 arr[1].append("bb1") 时,我遇到了以下错误:

IndexError: list index out of range.

我在声明这个二维数组的时候做错什么了吗?

补充:
不过我不知道数组的元素数量(行和列都不知道)。

12 个回答

24

你这里用的不是数组,而是列表(列表的列表)。

如果你想在Python中使用多维数组,可以使用Numpy数组。不过你需要提前知道数组的形状。

比如:

 import numpy as np
 arr = np.empty((3, 2), dtype=object)
 arr[0, 1] = 'abc'
81

在Python中并没有真正的多维数组,实际上你得到的是一个包含其他列表的列表。

>>> arr = [[]]
>>> len(arr)
1

你所做的就是声明了一个只包含一个列表的列表。所以 arr[0] 里面有一个列表,但 arr[1] 是没有定义的。

你可以这样定义一个包含两个列表的列表:

arr = [[],[]]

或者,如果你想定义一个更长的列表,可以使用:

>>> arr = [[] for _ in range(5)]
>>> arr
[[], [], [], [], []]

不应该这样做:

arr = [[]] * 3

因为这样会把同一个列表放在容器列表的三个地方:

>>> arr[0].append('test')
>>> arr
[['test'], ['test'], ['test']]
88

在Python中,你不需要像其他语言那样“声明”数组或者其他东西。你只需要给一个(新的)变量赋值就可以了。如果你想要一个多维数组,只需把一个新的数组作为数组的元素添加进去。

arr = []
arr.append([])
arr[0].append('aa1')
arr[0].append('aa2')

或者

arr = []
arr.append(['aa1', 'aa2'])

撰写回答