PEP 465添加@ infix運算符進行矩陣乘法。然而,這些列表目前尚未實現。因此,根據文檔的指示,我試圖實現我自己的版本__matmul__
。執行infix @列表
這是我第一次嘗試。
class Matrices(list):
def __matmul__(self,matrix):
tempmat = [[0 for row in range(len(self))] for col in range(len(matrix))]
for i in range(len(self)):
for j in range(len(matrix[0])):
for k in range(len(matrix)):
tempmat[i][j] += self[i][k] * matrix[k][j]
return tempmat
a = Matrices()
a.append([[1,2],[3,4]])
b = Matrices()
b.append([[5,6],[7,8]])
print([email protected])
但是我得到一個錯誤,
Traceback (most recent call last):
File "test.py", line 14, in <module>
print([email protected])
File "test.py", line 7, in __matmul__
tempmat[i][j] += self[i][k] * matrix[k][j]
TypeError: can't multiply sequence by non-int of type 'list'
我該如何解決這個問題?也就是說,我如何在Python中實現@
字符的列表?
只是在旁邊 - 如果你想實施matmul,你應該使用Strassen。 – erip
@erip我只是想了解python3.5中'@'的用法。無論如何,謝謝你。我會盡力去學習。謝謝:) –
瞭解。 Strassen是替代'O(n^3)'的更快的替代品 - 我認爲它是'O(n^2.8)' – erip