python中的两个二维数组,如何让这两个二维数组在不使用循环的情况下对应项进行加减乘除运算呢?
打个比方,两个数组分别是a[3][4]和b[3][4],python有没有提供这样的一种函数,让这两个数组中对应的元素(从a[0][0],b[0][0]到a[2][3],...
打个比方,两个数组分别是a[3][4]和b[3][4],python有没有提供这样的一种函数,让这两个数组中对应的元素(从a[0][0],b[0][0]到a[2][3],b[2][3])进行加减乘除运算,然后能得到新的数组c[3][4]
展开
展开全部
>>> 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]]
>>> 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))]
而且我并没有使用循环,我使用的是列表推导式。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
另外一种方法
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 换成你需要的其他操作,这里用的是减法操作
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 换成你需要的其他操作,这里用的是减法操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你只是不知道 i, j 的具体值(但是确定两数组都是 i * n),那一样可以迭代。
追问
额。。。能具体说明么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂你啥意思,试试zip()这个吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询