Python 列表与列表的乘积

Python 列表与列表的乘积,python,list,matrix-multiplication,Python,List,Matrix Multiplication,从数学上讲,我试图做一个xij*yi乘法。在Python中,我需要将x和y列表相乘,如下所示: x = [[1,2,3],[4,5,6],[7,8,9]] y = [10,100,1000] xy = [[] for i in range(3)] for i in range(3): for j in range(3): xy[i][j] += [y[i] * x[i][j]] 但是,我得到了列表索引超出范围的错误,而我希望得到如下输出: xy = [[10, 20,

从数学上讲,我试图做一个xij*yi乘法。在Python中,我需要将x和y列表相乘,如下所示:

x = [[1,2,3],[4,5,6],[7,8,9]]
y = [10,100,1000]

xy = [[] for i in range(3)]

for i in range(3):
   for j in range(3):
       xy[i][j] += [y[i] * x[i][j]]
但是,我得到了列表索引超出范围的错误,而我希望得到如下输出:

xy = [[10, 20, 30],[400, 500, 600],[7000, 8000, 9000]]

你能帮忙吗?

你离得很近。问题是您使用双索引[i][j]来引用嵌套列表。你只需要使用索引i。代码的其余部分非常好

x = [[1,2,3],[4,5,6],[7,8,9]]
y = [10,100,1000]

xy = [[] for i in range(3)]

for i in range(3):
    for j in range(3):
        xy[i] += [y[i] * x[i][j]]

# [[10, 20, 30], [400, 500, 600], [7000, 8000, 9000]]
另一种方法是使用append

使用NumPy的替代方案


我认为这将解决问题

x = [[1,2,3],[4,5,6],[7,8,9]] 
y = [10,100,1000]
xy = []
for i in range(3):
    xy.append([])
    for j in range(3):
        xy[i].append(y[i]*x[i][j])
print (xy)
在python中,使用“list.append”向列表中添加值

让我们使用numpy库的乘法函数,借助列表理解来解决这个问题-

import numpy as np
list([np.multiply(x[i],y[i]).tolist() for i in range(len(y))])
    [[10, 20, 30], [400, 500, 600], [7000, 8000, 9000]]

只是简单的列表理解:

x = [[1,2,3],[4,5,6],[7,8,9]]
y = [10,100,1000]

xy = [[y[i] * j for j in lst] for i, lst in enumerate(x)]
print(xy)
输出:

[[10, 20, 30], [400, 500, 600], [7000, 8000, 9000]]

精彩的接球!谢谢
x = [[1,2,3],[4,5,6],[7,8,9]]
y = [10,100,1000]

xy = [[y[i] * j for j in lst] for i, lst in enumerate(x)]
print(xy)
[[10, 20, 30], [400, 500, 600], [7000, 8000, 9000]]