我有一个整数列表,我需要将其作为矩阵打印出来。我做到如下:
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
我应该将所有内容转换为字符串吗?或者我怎样才能使它发挥作用?
答案 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
,可以使用打印功能的参数,例如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()