将列表中的整数打印为两位数

时间:2017-12-01 17:40:46

标签: python python-3.x list

我有一个整数列表,我需要将其作为矩阵打印出来。我做到如下:

    matrix = [mylist[i:i + n] for i in range(0, len(mylist), n)]
    for nlist in matrix:
        print(nlist)

效果很好;例如,如果我的列表是[1 2 3 4 5 6 7 8 9]并且n是3,它将输出:

[1 2 3]
[4 5 6]
[7 8 9]

现在我不只是想要那些整数,我想要在他们面前零;所以01 02 03等我读到这很容易用print("{:0=2d}".format(integer))完成,但它似乎不适用于我的列表或矩阵。 print("{:0=2d}".format(mylist))print("{:0=2d}".format(nlist))给了我一条错误消息。

如何使其适用于列表?

另外,我希望我能在这里问一个非常小的事情:如何摆脱矩阵周围的方括号?

编辑:我弄清楚为什么我的代码不起作用。我有这个if语句,如果程序遇到0,则必须将该零打印为字符串“X”。所以有时我会得到一个整数和一个字符串的列表。像这样:

08 07 06
05 04 03
02 01  X

我应该将所有内容转换为字符串吗?或者我怎样才能使它发挥作用?

5 个答案:

答案 0 :(得分:2)

我能想到添加零的唯一方法是将它们全部指定为字符串。然后还要删除括号,你必须分别打印每个数字。

for nlist in matrix:
    for value in nlist:
        print("0" + str(value), end=" ")
    print("")

答案 1 :(得分:0)

>>> l = [1,2,3] 
>>> " ".join(list(map(lambda x : "{:0=2d}".format(x), l)))
'01 02 03' 

没有括号,所以试试......

matrix = [mylist[i:i + n] for i in range(0, len(mylist), n)]
for nlist in matrix:
    print(" ".join(list(map(lambda x : "{:0=2d}".format(x), nlist))))

修改

使用混合列表,你可以像这样改变lambda,

>>> matrix = [[1,2,3],[4,'x',6],[7,8,9]]
>>> for nlist in matrix:
...     print(" ".join(list(map(lambda x: "{:0=2d}".format(x) if isinstance(x,int) else x, nlist))))
... 
01 02 03
04 x 06
07 08 09

答案 2 :(得分:0)

编辑:支持0' s打印为X并将{p}围绕print包装为python 3.x的新条件。

假设您的整数存储在列表l中。

l = [1, 2, 3, 4, 5, 6, 7, 8, 0]  
n = 3

for i in range(n):
    print(" ".join(["{:0=2d}".format(x) if x != 0 else ' X' for x in l[n*i:n*(i+1)]]))

输出:

01 02 03
04 05 06
07 08  X

解释是,我们一次在l个元素的n个元素组中遍历列表l[n*i:n*(i+1)](让我们将其称为子列表)。然后,我们格式化子列表的每个元素,我们应用format函数将其转换为您想要的字符串。最后,将格式化的子列表与空格和打印一起加入。

答案 3 :(得分:0)

n = 3
mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9]
matrix = [mylist[i:i + n] for i in range(0, len(mylist), n)]
for nlist in matrix:
    mstr = ''
    for i in nlist:
        mstr += "{:0=2d} ".format(i)
    print(mstr)

会给你

01 02 03 
04 05 06 
07 08 09 

答案 4 :(得分:0)

您的矩阵是列表。所以当你做的时候

for nlist in matrix:
        print(nlist)

nlist将是列表,您将直接打印它而不需要解压缩。因此,如果您想避开括号,可以print(*nlist)。有关更多信息,请参阅unpacking

如果您想在每个元素前面添加0,可以使用打印功能的参数,例如sepend。无论元素是int还是str

,这都会有效
matrix = [mylist[i:i + n] for i in range(0, len(mylist), n)]
for nlist in matrix:
    for item in nlist:
      print('0',item,sep='',end=' ')
    print()