我有两个嵌套列表:
a = [[1,2,3],[2,4,2]]
b = [[5,5,5],[1,1,1]]
我想将每组元素相乘并求和得到
c = [[30],[8]]
哪个结果来自= [[1*5+2*5+3*5],[2*1,4*1,2*1]]
我尝试过这样做:
c = sum(x * y for x, y in zip(a, b))
但我得到“无法将序列乘以‘list’类型的非 int”
是否有一种简单的列表理解方法可以避免 for 循环?
您可以实施dotproduct
itertools 食谱 https://docs.python.org/3/library/itertools.html#itertools-recipes:
import operator
def dotproduct(vec1, vec2):
return sum(map(operator.mul, vec1, vec2))
Code
a = [[1,2,3], [2,4,2]]
b = [[5,5,5], [1,1,1]]
[[dotproduct(x, y)] for x, y in zip(a, b)]
# [[30], [8]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)