我必须打印一个2D矩阵,以使其看起来很整洁,但是我一直得到一个奇怪的输出。我不太愿意输入任何类似漂亮的文字来帮助我。我的代码是这样的:

def pretty_print(M):
    for rows in M:
        print('{:<4}'.format(each) for each in rows)


但是当我放入一个3x3矩阵时,这是我的结果:(由于某种原因它不会显示,但它说_____处的生成器对象genexpr在生成器对象和genexpr的任一侧都小于和大于符号)

似乎还说生成器对象事物是矩阵中有行的次数。

generator object genexpr at 0x03368530
generator object genexpr at 0x03368530
generator object genexpr at 0x03368530


任何帮助表示赞赏。谢谢。

最佳答案

print分别打印传递给它的每个参数。您为其提供了一个生成器参数,因此它将输出<generator object genexpr at 0x03368530>;要从迭代器中打印每个参数,请使用* apply运算符(请注意,我也更改了代码以执行列表推导,而不是生成器,因为在这种情况下这样做会更有效)

def pretty_print(M):
    for rows in M:
        print(*['{:<4}'.format(each) for each in rows])


输出示例:

46   20   18   55
99   14   76   12
81   7    48   79
58   36   74   7

07-25 23:26