为了账号安全,请及时绑定邮箱和手机立即绑定

列表和列表列表的乘法

列表和列表列表的乘法

aluckdog 2021-09-24 15:57:05
从数学上讲,我正在尝试进行 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]]你能帮我吗?
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

你非常接近。问题是您使用双索引[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]]

替代方法是使用append


for i in range(3):

    for j in range(3):

        xy[i].append(y[i] * x[i][j])

使用 NumPy 的替代方法


import numpy as n

x = np.array([[1,2,3],[4,5,6],[7,8,9]])

y = np.array([10,100,1000])

xy = (x.T*y).T


查看完整回答
反对 回复 2021-09-24
?
心有法竹

TA贡献1866条经验 获得超5个赞

我认为这将解决问题,


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()' 将值添加到列表中。


查看完整回答
反对 回复 2021-09-24
  • 3 回答
  • 0 关注
  • 372 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信