1. 如果是两个size一样的list,即行数和列数一致,如下:
a = [[1, 2], [3, 4]] b =[[3, 4], [5, 6]]
执行:[list(i) for i in map(lambda c,d: map(lambda e,f:e*f, c,d), a,b)]
输出:[[3, 8], [15, 24]]
解释: map(lambda c,d: map(lambda e,f:e*f, c,d), a,b) 这边套了两层map,第一个map函数 会按行遍历a和b
如第一次会遍历到 c = [1, 2]和 d = [3,4];将遍历到的结果再次调用第二层的map,对应的为map(lambda e,f:e*f, c,d),
这一层会对 c和d的每个元素进行相乘;也就是我们想要的点乘。
注:返回的是一个迭代器,所以需要依次转化为list。
2. 如果都是一维的list,如下:
如果都是一维的话 只需要调用第二层的map函数:
a = [1, 2] b =[3, 4]
list(map(lambda e,f:e*f, a,b))