如何让Python返回一个列表的列矩阵?

0 投票
1 回答
821 浏览
提问于 2025-04-17 23:55

我正在上一个入门课程,作业要求我创建一个乘法表,我会把这个功能叫做 make_x_table (r,c):,它需要输出这样的结果:

make_x_table(3,4):
[[1, 2, 3, 4],
 [2, 4, 6, 8],
 [3, 6, 9, 12]]

我的问题是,我不能仅仅使用打印功能来打印单独的列表,这在我最开始写的 make_x_table_wrong (r,c): 里是这样做的:

def make_x_table_wrong (r,c):
    for rownum in range(1, r+1):
        list_v = []
        for colnum in range(1, c+1):
            v = colnum*rownum
            list_v.append(v)
        print (list_v)

我需要能够返回一个列表的列表,作为一个列矩阵。有人能帮我吗?

1 个回答

0

在你的代码示例中,在 for rownum in range(1, r+1): 这一行上面加上 buff = [],这样:

buff = []
for rownum in range(1, r+1):

然后,在你有 print(list_v) 的地方,做如下修改:

buff.append(list_v)

这样你的代码示例就会变成:

def make_x_table_right (r,c):
   buff = []
    for rownum in range(1, r+1):
        list_v = []
        for colnum in range(1, c+1):
            v = colnum*rownum
            list_v.append(v)
        buff.append(list_v)
    return buff

明白了吗?

另外,因为你的乘法表可能是个正方形,所以我建议你只传一个参数 n,然后用 n 来代替 rc。还有一点,另一个用户在评论里提到的那种一行代码的列表推导也是完全可以的。此外,通常在处理矩阵循环时,使用变量 ij 来表示行和列,所以你可以把 rownum 改成 i,把 colnum 改成 j

撰写回答