【发布时间】:2020-08-29 09:40:04
【问题描述】:
我正在尝试编写将返回两个矩阵(嵌套列表)之和的简单函数。我不明白为什么下面的代码不能按预期工作。请注意,所有打印的步骤都很好,但最后的结果却不是。
代码:
matrix_a = [[1, 2, 4], [0, 1, 3], [2, 2, 8]]
matrix_b = [[0, 3, 1], [5, 4, 2], [8, 2, 6]]
rows = len(matrix_a)
columns = len(matrix_a[0])
result = [[0] * columns] * rows
for x in range(rows):
for y in range(columns):
result[x][y] = matrix_a[x][y] + matrix_b[x][y]
print(f'[{x}][{y}]: {matrix_a[x][y]} + {matrix_b[x][y]} = {result[x][y]}')
print(result)
输出:
[0][0]: 1 + 0 = 1
[0][1]: 2 + 3 = 5
[0][2]: 4 + 1 = 5
[1][0]: 0 + 5 = 5
[1][1]: 1 + 4 = 5
[1][2]: 3 + 2 = 5
[2][0]: 2 + 8 = 10
[2][1]: 2 + 2 = 4
[2][2]: 8 + 6 = 14
[[10, 4, 14], [10, 4, 14], [10, 4, 14]]
你能告诉我如何解决它吗?对我来说更重要的是,为什么最后一行被复制了三遍?
【问题讨论】:
-
使用列表理解
[[sum(y) for y in zip(*x)] for x in zip(matrix_a, matrix_b)]
标签: python list matrix nested-lists