python中的二维数组

2024-09-28 19:07:42 发布

您现在位置: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.

我在试图声明二维数组时做了什么蠢事吗?

编辑:
但我不知道数组中元素的数量(行和列)。


Tags: 声明index错误作业数组outlistarr
3条回答

在python中不“声明”数组或其他任何东西。你只需给一个(新的)变量赋值。如果需要多维数组,只需添加一个新数组作为数组元素。

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

或者

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

在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']]

这里使用的不是数组,而是列表。

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

例如:

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

相关问题 更多 >