python中的两个二维数组,如何让这两个二维数组在不使用循环的情况下对应项进行加减乘除运算呢?

打个比方,两个数组分别是a[3][4]和b[3][4],python有没有提供这样的一种函数,让这两个数组中对应的元素(从a[0][0],b[0][0]到a[2][3],b[2][3])进行加减乘除运算,然后能得到新的数组c[3][4]

第1个回答  推荐于2018-03-13
>>> a =[[1,2,3,6],[2,6,3,9],[3,7,9,0]]
>>> b =[[5,7,3,1],[5,7,2,4],[12,34,56,98]]
>>> c = [[a[i][j] -b[i][j] for j in range(4)] for i in range(3)]
>>> c
[[-4, -5, 0, 5], [-3, -1, 1, 5], [-9, -27, -47, -98]]追问

我说的是在不使用循环的情况下,因为我现在只知道a[i][j],b[i][j]两个数组,但问题是我并不知道i和j 的值是多少

追答

稍作修改即可,加个len()取出长度。

c = [[a[i][j] -b[i][j] for j in range(len(a[i]))] for i in range(len(a))]
而且我并没有使用循环,我使用的是列表推导式。

本回答被提问者和网友采纳
第2个回答  2012-08-04
另外一种方法

a= ...
b=...

python2.x

[map(lambda x,y:x-y,x,y) for (x,y) in zip(a,b)]

python3.x

[list(map(lambda x,y:x-y,x,y)) for (x,y) in zip(a,b)]

其中的lambda x,y:x-y 换成你需要的其他操作,这里用的是减法操作
第3个回答  2012-08-03
如果你只是不知道 i, j 的具体值(但是确定两数组都是 i * n),那一样可以迭代。追问

额。。。能具体说明么?

第4个回答  2012-08-04
不懂你啥意思,试试zip()这个吧
相似回答