首页 > 解决方案 > 将值从 1 个列表传递到矩阵中的子列表

问题描述

我目前正在创建一个矩阵而不使用 numpy。有以下一种情况:如果整数输入的个数小于矩阵的定义维数,则用0填充空格。例如:数字输入 = 1,2,3,4 ;行 = 3 ; Columns = 2 给出(嵌套列表格式):[[1,2],[3,4],[0,0]]

对于这种情况,我有以下代码:

def mat(*Num,row,col):
    Out=[]

    for i in range(row):
      In = []
      for j in range(col):
        In.append(0)            # Initialize the defined matrix with 0
      Out.append(In)

    k=0                         # Index for number input list
    for i in range(len(Out)):
      for j in range(i):
        Out[i][j]=Num[k]        # Update values from integer input list into the matrix
        k+=1
    return Out

mat(1,2,3,4, row=3, col=2)

但是,我得到了这个矩阵:[[0, 0], [1, 0], [2, 3]]而不是[[1, 2], [3, 4], [0, 0]]

我应该如何改进以将所有值传递到适当位置的列表中?我在这里先向您的帮助表示感谢!

标签: pythonfor-loopmatrixrangenested-lists

解决方案


只需生成并附加新行

def mat(*num, row, col):
    matrix = []

    k = 0
    n = len(num)
    for i in range(row):
        new_row = []
        for j in range(col):
            if k < n:
                new_row.append(num[k])
                k += 1
            else:
                new_row.append(0)
        matrix.append(new_row)

    return matrix

print(mat(1,2,3,4, row=3, col=2))

推荐阅读