【发布时间】:2017-09-25 04:37:36
【问题描述】:
我有两个嵌套列表:
a = [[1,2,3],[2,4,2]]
b = [[5,5,5],[1,1,1]]
我想将每组元素相乘并求和得到
c = [[30],[8]]
= [[1*2+2*5+3*5],[2*1,4*1,2*1]] 的结果
我试过这样做:
c = sum(x * y for x, y in zip(a, b))
但我得到“不能将序列乘以 'list' 类型的非整数”
是否有一种简单的列表理解方式来避免 for 循环?
【问题讨论】:
-
您应该首先尝试使用 for 循环编写它并添加一些
prints 以了解发生了什么。当你理解了它,你可以用更简洁的方式重写它。 -
嗯... 1*2+2*5+3*5 = 30 怎么算?运算顺序是“先乘再加”,所以应该是 2+10+15=27,对吧?
-
看起来您正在尝试进行矩阵乘法。如果是这样,您可能只想开始在
numpy中使用多维数组。 -
您的意思可能是 1*5 作为第一个,对吧?这将是......哪个结果来自 = [[1*5+2*5+3*5],[2*1,4*1,2*1]]
标签: python