我正在为传统的for循环中的嵌套矩阵赋值。
matrix= [[0 for j in range(3)]for i in range(3)]
value = 10
#Setting value to a particular row in the matrix
for i in range(3):
if i == 2:
for j in range(3):
matrix[i][j] = 10
#Setting value to a particular column in the matrix
val = 20
for i in range(3):
for j in range(3):
if j == 1:
matrix[i][j] = 20
可以在嵌套列表理解中将值分配给矩阵吗? 我试过这个:
matrix = [[value for j in i if j == col ]for i in matrix]
但它不是修改矩阵,而是创建一个新矩阵。如何通过嵌套列表推导来实现这一点?
答案 0 :(得分:4)
您的示例可以使用numpy数组轻松完成。
import numpy as np
matrix = np.zeros((3,3))
# Setting a row
matrix[1] = 10
# Setting a column
matrix[:,1] = 20
答案 1 :(得分:0)
以下理解完成了这项工作:
matrix= [
[
20 if j == 1 else 10 if i == 2 else 0
for j in range(3)
]
for i in range(3)
]
它会产生:
[[0, 20, 0], [0, 20, 0], [10, 20, 10]]
在你的解决方案中,你不必两次检查所有细胞。
matrix = [[0 for j in range(3)] for i in range(3)]
for i in range(3):
matrix[2][i] = 10
matrix[i][1] = 20