Python中的二维数组
我想知道在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'])