如何在不同的行中打印列表列表?

时间:2019-04-26 04:03:04

标签: python list formatting

我正在尝试用python创建一个Pascal金字塔,并且使用列表列表来完成此操作,这样可以更轻松地将需要的值插入需要的位置,所有工作正常,除了打印时列表的列表格式不正确,我希望它

我尝试使用end =“”进行格式化,并使用*来解压缩列表列表,但是这些似乎都不起作用


    def unos(n,fila,columna,m):
        mitad=columna//2
        m[0][4]=1
        for i in range(1,fila):
            x=mitad+i
            y=mitad-i
            m[i][x]=1
            m[i][y]=1

    **print(*m)**#The error seems to be here(I could be wrong)

Python通过以下方式打印m:[0,0,0,0,1,0,0,0,0] [0,0,0,1,0,1,0,0,0] [0, 0,1,0,0,0,1,0,0] [0,1,0,0,0,0,0,1,0] [1,0,0,0,0,0,0, 0,1]

但是我需要打印的是:

[0,0,0,0,1,0,0,0,0]

[0,0,0,1,0,1,0,0,0]

[0,0,1,0,0,0,1,0,0]

[0,1,0,0,0,0,0,1,0]

[1、0、0、0、0、0、0、0、1]

4 个答案:

答案 0 :(得分:1)

要回答您的问题,我们必须检查拆包运算符(*)以及它与print一起工作的方式。

回想一下,拆包运算符采用单个可迭代对象,并将其转换为多个元素,这些元素被依次传递给函数。

然后,我们知道print采用args形式的多个参数,并在必要时使用分隔符将它们分开。考虑到这一点,我们可以看到打印a b c的四种方法是等效的:

print('a', 'b', 'c')
print(*['a', 'b', 'c'])
print(sep.join(['a', 'b', 'c']))
print('a' + sep + 'b' + sep + 'c')

......,其中sep默认为(单个空格)。

现在,我们注意到m嵌套 list。因此,通过执行print(*m),您正在执行的操作实际上是print(m[0], m[1]...m[-1]),其中m[0]m[1]...m-1分别是lists

通过参考上面对print的分析,我们可以看到它与print(m[0] + ' ' + m[1] + ' ' + ... + ' ' + m[-1])相同。

很明显,其中没有换行符,但是应该有换行符,其中现在有空格。

要获得我们想要的内容,它是每个元素之后的换行符,因此,我们只需执行print(*m, sep='\n')

答案 1 :(得分:1)

您可以使用str.join将其全部显示为一个字符串:

>>> print("\n".join("".join(str(e) for e in x) for x in l))
000010000
000101000
001000100
010000010
100000001

l是您的m

答案 2 :(得分:0)

只需要单独的打印语句。

for l in m:
    print(l)

答案 3 :(得分:0)

您可以使用pprint

public printText(text, charset = 'ISO-8859-1') {
        // ISO-8859-1,UTF-8
        return new Promise((resolve, reject) => {
            DatecsPrinter.printText(text, charset, function (success) {
                resolve(success);
            }, function (error) {
                reject(error);
            });
        });
    }

结果:

import pprint
stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
stuff.insert(0, stuff)
pprint.pprint(stuff)

您可以看到更多示例here