我试图打印出像桌子一样的2D列表,我在这里找到了一段代码: Pretty print 2D Python list
但我无法理解它是如何运作的,有人可以向我解释一下吗?
s = [[str(e) for e in row] for row in matrix]
lens = [max(map(len, col)) for col in zip(*s)]
fmt = '\t'.join('{{:{}}}'.format(x) for x in lens)
table = [fmt.format(*row) for row in s]
print '\n'.join(table)
答案 0 :(得分:1)
正如其他人所评论的那样,这里有很多概念(在一个答案中太多而无法管理)。但是对于你的进一步研究(依次使用(小)示例2D列表来尝试每个语句),这是它如何分解:
将数据转换为字符串列表列表(使用 list comprehension ):
s = [[str(e) for e in row] for row in matrix]
获取每列中最大字符数的列表,以便我们知道如何格式化列:
lens = [max(map(len, col)) for col in zip(*s)]
(这个更复杂:zip()
这里允许我们迭代s
的列,将每个列传递给len()
方法以查找其长度(这是通过{实现的} {1}});然后找到内置map()
的每列的最大长度。)
将相应的Python格式字符串设置为以制表符分隔的条目:
max()
fmt = '\t'.join('{{:{}}}'.format(x) for x in lens)
现在是每一行的格式说明符,例如fmt
三列宽度为4,6,6(NB仅适用于Python 2.7+,因为字段尚未编号)
将表格设置为字符串格式的行列表(使用其他列表解析):
'{:4}\t{:6}\t{:6}'
将整个部分组合在一个字符串中,行以换行符分隔:
table = [fmt.format(*row) for row in s]
print '\n'.join(table)
获取一个字符串列表并生成一个字符串,所有字符串都由选定的分隔符(此处为join()
,换行符)连接在一起。
答案 1 :(得分:0)
使用 print() 中的“end”函数的一种更简单的方法:
{"sub_error":20152,"error_description":"invalid code","error":1101}
“end”函数设置参数结束后将打印的内容。 '\t' 参数设置一个制表符,它均匀地间隔表格。