【问题标题】:python: list index out of range in matrix multiplicationpython:矩阵乘法中的列表索引超出范围
【发布时间】:2018-02-22 14:43:48
【问题描述】:

我是 python 新手,如果这是一个愚蠢的问题,我很抱歉。这是一个用于矩阵乘法的合法程序,但我不明白为什么它会将错误列表索引抛出超出我输入的范围?

def matmult(a,b):
 product=[[0 for i in range(len(a))] for j in range(len(b[0]))]
 for i in range(len(a)):
    for j in range(len(b[0])):
      for k in range(len(b)):
        product[i][j]+=a[i][k]*b[k][j]
 return product
matmult([[1,1]],[[3,4],[5,6]])

【问题讨论】:

  • 对于谁否决了这个问题,这个人是在明确说明她是 python 之后提出的。请不要那么敌对。从前我们都是新人,犯过这样的错误。
  • @SagarBHathwar 谢谢 :)
  • @SagarBHathwar 它不适用于非正方形矩阵
  • 道歉。我已经更正了我的答案。我已经切换了初始化顺序。另外,确保len(a[0]) == len(b) 使函数不会为不合格的矩阵返回垃圾

标签: python list function matrix matrix-multiplication


【解决方案1】:

因为product=[]。产品列表为空,但您正在为其编制索引。那就是抛出IndexError: list index out of range 错误

改为这样做

product = [[0 for i in range(len(b[0]))] for j in range(len(a))]

这将为产品预先分配空间,以便您可以对其进行索引

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多