如何访问二维数组的元素?

24 投票
6 回答
231601 浏览
提问于 2025-04-16 23:22

我想了解一下,如何操作一个二维数组的元素。

比如我有这样的数组:

a= ( a11 a12 a13 )  and b = (b11 b12 b13) 
     a21 a22 a23             b21 b22 b23

我在Python中定义它们,比如这样:

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

我发现我不能直接用 a[1][1] 来访问,而是用 a[1],这会给我一个结果 [2,1]。所以,我不明白我怎么才能访问这些数组的第二行?那应该是 a21, a22, a23, b21, b22, b23 吧?

我该怎么做才能像这样相乘 c1 = a21*b21, c2 = a22*b22,等等?

6 个回答

3

看起来在这里可以正常工作:

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

如果你想对二维数组进行很多计算,最好使用NumPy数组,而不是嵌套列表。

针对你的问题,你可以用:zip(*a) 来转置它:

In [55]: a=[[1,1],[2,1],[3,1]]
In [56]: zip(*a)
Out[56]: [(1, 2, 3), (1, 1, 1)]
In [57]: zip(*a)[0]
Out[57]: (1, 2, 3)
23

如果你有

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

那么

a[1][1]

就可以正常工作。它指向你想要的第二列、第二行。

我不太确定你哪里出错了。

要对第三列的单元格进行乘法运算,你可以直接这样做

c = [a[2][i] * b[2][i] for i in range(len(a[2]))] 

这样对于任何行数都可以正常使用。

补充一下:第一个数字是列,第二个数字是行,按照你现在的布局,它们都是从开始编号的。如果你想换个顺序,可以这样做

a = zip(*a)

或者你也可以这样创建:

a=[[1, 2, 3], [1, 1, 1]]

撰写回答