使用python中的嵌套列表解析修改矩阵

时间:2015-06-10 14:42:44

标签: python

我正在为传统的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]

但它不是修改矩阵,而是创建一个新矩阵。如何通过嵌套列表推导来实现这一点?

2 个答案:

答案 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