映射比 for 循环慢
mapping is slower than for loop
有类似的问题
但这并不能解释我的问题
我写了一个代码将两个矩阵相乘我使用了简单的方法
def multiply(A, B):
if A.column_count == B.row_count:
transpose_of_B = B.transpose().matrix
data_structure = []
for row in A.matrix:
row_column = []
for column in transpose_of_B:
row_column_array = list(zip(row, column))
total = 0
for element_product in row_column_array:
total += element_product[0]*element_product[1]
row_column.append(total)
data_structure.append(row_column)
return Matrix(data_structure)
else:
raise Exception(
"NOT CONFORMABLE!! column_count does not match the row_count")
和差异。方法
if A.column_count == B.row_count:
product_matrix = Matrix([[sum(list(map(lambda x, y:x*y, A.row(r+1), B.column(c+1))))
for c in range(B.column_count)] for r in range(A.row_count)])
return product_matrix
有人请解释为什么在运行时存在显着差异
您正在比较两种完全不同的方法。在第一个中,您遍历行,在第二个中,您只有索引的 for 循环并通过 A.row()
.
访问行
这将是一个类似的列表理解:
transpose_of_B = B.transpose().matrix
product_matrix = Matrix([[sum(map(lambda x, y: x*y, row, column))
for column in transpose_of_B] for row in A.matrix])
有类似的问题
我写了一个代码将两个矩阵相乘我使用了简单的方法
def multiply(A, B):
if A.column_count == B.row_count:
transpose_of_B = B.transpose().matrix
data_structure = []
for row in A.matrix:
row_column = []
for column in transpose_of_B:
row_column_array = list(zip(row, column))
total = 0
for element_product in row_column_array:
total += element_product[0]*element_product[1]
row_column.append(total)
data_structure.append(row_column)
return Matrix(data_structure)
else:
raise Exception(
"NOT CONFORMABLE!! column_count does not match the row_count")
和差异。方法
if A.column_count == B.row_count:
product_matrix = Matrix([[sum(list(map(lambda x, y:x*y, A.row(r+1), B.column(c+1))))
for c in range(B.column_count)] for r in range(A.row_count)])
return product_matrix
有人请解释为什么在运行时存在显着差异
您正在比较两种完全不同的方法。在第一个中,您遍历行,在第二个中,您只有索引的 for 循环并通过 A.row()
.
这将是一个类似的列表理解:
transpose_of_B = B.transpose().matrix
product_matrix = Matrix([[sum(map(lambda x, y: x*y, row, column))
for column in transpose_of_B] for row in A.matrix])