gpt4 book ai didi

python - 类型错误 : 'int' object is not subscriptable (python)

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:20 24 4
gpt4 key购买 nike

我在 python3 中制作矩阵乘法算法时遇到问题。

这是代码:

def matrixMult(m1, m2):
result = [[0 for x in range(len(m1))] for x in range(len(m2[0]))]
# Iterate through rows of m1.
for i in range(len(m1)):
# Iterate through columns of m2.
for j in range(len(m2[0])):
# Iterate through rows of m2.
for k in range(len(m2)):
result[i][j] += m1[i][k] * m2[k][j] # error occurs here.

return result

尝试像这样在两个随机矩阵上调用它:

m = [3, 4, 2]
n = [[13, 9, 7, 15], [8, 7, 4, 6], [6, 4, 0, 3]]
r = matrixMult(m, n)

这会导致 TypeError: 'int' object is not subscriptable 消息。

我为上面声明的两个矩阵都添加了 print(type()),它们属于 'list' 类。对函数原型(prototype)中使用的类,class 'list' 做同样的事情。该死,一切都是 'list' 类型。我不知道 int object 是什么。

最佳答案

您将 m1 视为整数的嵌套列表:

result[i][j] += m1[i][k] * m2[k][j]
# ^^^^^^^^

不是;它只是一个简单的整数列表。 m1[i] 是一个整数对象,你不能索引整数:

>>> [3, 4, 2][0]
3
>>> [3, 4, 2][0][0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object has no attribute '__getitem__'

您可能希望 i 用作索引:

result[i][j] += m1[i] * m2[k][j]

或者只传入二维数组(所以传入 [[3], [4], [2]] 而不是 [3, 4, 2]).

关于python - 类型错误 : 'int' object is not subscriptable (python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com