[英]Printing integers in a list as double digits
我有一个整数列表,需要以矩阵形式打印出来。 我这样做如下:
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
那我应该将所有内容都转换为字符串吗? 或者我该如何使其工作?
我可以想到的添加零的唯一方法是将它们全部指定为字符串。 然后,要摆脱括号,您将必须分别打印每个数字。
for nlist in matrix:
for value in nlist:
print("0" + str(value), end=" ")
print("")
>>> 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
编辑:支持新的条件,即0
应当打印为X
并在python 3.x的print
周围包裹括号。
假设您的整数存储在列表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函数将其转换为所需的字符串。 最后,将格式化的子列表与空格连接在一起并打印。
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
您的矩阵是一个列表列表 。 所以当你做的时候
for nlist in matrix:
print(nlist)
nlist将是list,您将直接打印它而无需拆包 。 因此,如果您想避免使用方括号,则可以执行print(*nlist)
。 有关更多信息,请参阅解压缩 。
如果要在每个元素前面添加0
,则可以利用print函数的参数,例如sep
和end
。 无论元素是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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.