Python 3.x 在python 3中使用循环(无numpy)将3x4矩阵中的元素逐个相乘

Python 3.x 在python 3中使用循环(无numpy)将3x4矩阵中的元素逐个相乘,python-3.x,Python 3.x,我想做一个3行4列的矩阵,包括数字1-12。然后将这些数字乘以一个因子,形成一个新的矩阵 def matrix(x): matrix=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] new_matrix=[[x*1,x*2,x*3],[x*4,x*5,x*6],[x*7,x*8,x*9],[x*10,x*11,x*12]] print(new_matrix) 这种方法可行,但不使用循环,我正在寻找一种使用循环的方法,类似这样: def mat

我想做一个3行4列的矩阵,包括数字1-12。然后将这些数字乘以一个因子,形成一个新的矩阵

def matrix(x):
    matrix=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
    new_matrix=[[x*1,x*2,x*3],[x*4,x*5,x*6],[x*7,x*8,x*9],[x*10,x*11,x*12]]
    print(new_matrix)
这种方法可行,但不使用循环,我正在寻找一种使用循环的方法,类似这样:

 def matrix(x):
     for i in range(3):
         matrix.append([])
         for j in range(4):
             matrix[i].append(0)
             return matrix

对于这样的事情,您不需要使用显式循环(除非您真的想要)。列表理解是生成列表的一种更有效的方法,其语法与for循环类似:

以下是生成包含最大为
M*N的数字的任何MxN矩阵的理解:

def matrix(m, n):
    return [[x+1 for x in range(row * n, (row + 1) * n)] for row in range(m)]
下面是将
矩阵返回的嵌套列表乘以某个因子的理解:

def mult(mat, fact):
    return [[x * fact for x in row] for row in mat]
以下是您的具体3x4案例的结果:

>>> m = matrix(3, 4)
>>> print(m)
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> m2 = mult(m, 2)
>>> print(m2)
[[2, 4, 6, 8], [10, 12, 14, 16], [18, 20, 22, 24]]
如果您希望像原始示例中那样交换索引,只需交换输入
m
n

>>> matrix(4, 3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

mult
将对您传入的任何嵌套列表起相同的作用。

添加您当前获得的错误/结果的描述。没有错误,但我忘记了包括必须使用循环来完成,如果没有numpy,我将进行编辑,看起来您的矩阵被转置了。通常,第一个索引是行,第二个是列。