列表和列表列表的乘法

从数学上讲,我正在尝试进行 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]]

你能帮我吗?


aluckdog
浏览 373回答 3
3回答

缥缈止盈

你非常接近。问题是您使用双索引[i][j]来引用嵌套列表。你只需要使用 index 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]]替代方法是使用appendfor i in range(3):    for j in range(3):        xy[i].append(y[i] * x[i][j])使用 NumPy 的替代方法import numpy as nx = np.array([[1,2,3],[4,5,6],[7,8,9]])y = np.array([10,100,1000])xy = (x.T*y).T

心有法竹

我认为这将解决问题,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()' 将值添加到列表中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python