(Python) 无法正确获得矩阵标量乘法输出

(Python) Can't get matrix scalar multiplication output correct

我正在尝试将矩阵乘以标量,但无法正确输出。

  m, n = 3, 3
scalar = 5
A = [ [1, 0, 0],
      [0, 1, 0],
      [0, 0, 1] ]
B = []


for i in range(n):
    B.append([])
    for j in range(n):
        B[i].append(A[i][j] * scalar)
    print (B)

我收到的输出是:

[[5, 0, 0]]
[[5, 0, 0], [0, 5, 0]]
[[5, 0, 0], [0, 5, 0], [0, 0, 5]]

我想要的输出是:

[ [5, 0, 0],
  [0, 5, 0],
  [0, 0, 5] ]

我怎么去那里?

编辑:您的建议奏效了,谢谢大家!

可以使用numpy吗? 它是这样工作的:

import numpy as np

scalar = 5

a = [[1, 0, 0],
     [0, 1, 0],
     [0, 0, 1]]
print(np.array(a) * scalar)

在不依赖另一个 module/library 的情况下,最好的办法是在循环外处理打印。这是一种方法:

for row in B:
    print(row)

我的解决方案:

m, n = 3, 3
scalar = 5
A = [ [1, 0, 0],
      [0, 1, 0],
      [0, 0, 1] ]
B = []


for row_index,row in enumerate(A):
    for column_index,column in enumerate(row):
        A[row_index][column_index] *= scalar

for i in A:
    print(i)

输出:

[5, 0, 0]
[0, 5, 0]
[0, 0, 5]

注意:我根本没有使用 B

你们非常亲密!这是我的解决方案

A = [[1,0,0], [0,1,0], [0,0,1]]
B = []
m,n = 3,3
scalar = 5
for i in range(n):
   B.append([])
   for j in range(n):
      result = A[i][j] * scalar
      B[i].append(result)
#B = [[5, 0, 0], [0, 5, 0], [0, 0, 5]]
for i in B:
   print(i)

然后你的输出是:

[5, 0, 0]
[0, 5, 0]
[0, 0, 5]