如何访问二维数组的元素?
我想了解一下,如何操作一个二维数组的元素。
比如我有这样的数组:
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]]