如何让python以列矩阵的形式返回列表列表?
所以我在一个介绍课程中,我有一个作业,我必须创建一个乘法表,我将调用函数如何让python以列矩阵的形式返回列表列表?,python,python-3.x,Python,Python 3.x,所以我在一个介绍课程中,我有一个作业,我必须创建一个乘法表,我将调用函数make_x_table(r,c):,它需要产生这个结果: make_x_table(3,4): [[1, 2, 3, 4], [2, 4, 6, 8], [3, 6, 9, 12]] 我的问题是,我不能只使用print函数来打印单个列表,这是我最初在这里所做的,我称之为make_x_table_error(r,c):: 我需要能够以列矩阵的形式返回列表列表。关于如何操作的任何帮助?在您的代码示例中,对于范围(1,r+
make_x_table(r,c):
,它需要产生这个结果:
make_x_table(3,4):
[[1, 2, 3, 4],
[2, 4, 6, 8],
[3, 6, 9, 12]]
我的问题是,我不能只使用print函数来打印单个列表,这是我最初在这里所做的,我称之为make_x_table_error(r,c):
:
我需要能够以列矩阵的形式返回列表列表。关于如何操作的任何帮助?在您的代码示例中,对于范围(1,r+1)中的rownum,请参见上面的
:
放置buff=[]
,以便:
buff = []
for rownum in range(1, r+1):
然后,如果您有打印(列表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
代替r
和c
。还有一件事,另一个用户以一行注释的形式发布的列表理解也是非常好的。另外,对于矩阵循环标识符,通常使用变量i
和j
。因此,对于m.wasowski,你要说的不是rownum
,而是i
和colnum
你要说j
[[i*j代表范围(1,c+1)中的i];对于范围(1,r+1)中的j]
,我希望它作为列矩阵返回,而不是打印它。我知道怎么做。对于alfasin来说,这实际上是一个非常好的方法来缩短我以前的代码,但我不确定这如何允许我将其作为列矩阵返回。有可能吗?还有,别忘了把有用的答案标为正确,然后投票表决。欢迎使用stack overflow.define“column matrix”对不起,我在其他地方看到了这个术语,我想我应该使用它。基本上,我希望列表中的每个列表都显示在自己的行上,就像我在需要的结果中显示的那样。是的,我认为他的更短的方法非常酷。但是,有可能以列格式返回列表列表吗?我可以很容易地生成列表的水平列表……它以2d格式返回列表。我想你说的是打印格式函数之类的。让我更新我的答案。检查这个,这将解决您的打印问题。然后你可以把你的矩阵传给那个打印函数,然后打印出来,就像这样:一些打印函数(make_x_table_right(r,c))
我可能误解了我的教授想要什么。我可以让函数在shell中垂直打印,但是我的教授在作业中用词的方式让我觉得,当我运行模块时,shell应该使用return函数将列表列表生成为列表列。我开始认为这是不可能的?我认为你误解了你的教授想要你做什么。向他展示到目前为止你在矩阵表函数中得到了什么,看看他是怎么说的,因为就目前的情况来看,这双[[
事情就是这样,我相信它确实是在返回一个列表列表。除非他想让你用另一种方式,将列作为行而不是列表。如果他想转换你现在返回的矩阵函数,只要zip(*make_x_table_right(r,c))
,这样可以将列转换为行。更好吗?
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