Python: 有没有办法漂亮地打印列表?

Python: Is there a way to pretty-print a list?

我的列表产生以下输出:(运行 Python 3.4)

('MSG1', 3030)
('MEMORYSPACE', 3039)
('NEWLINE', 3040)
('NEG48', 3041)

有什么办法可以让所有的数字排成一列吗?谢谢。 我的代码是一个简单的打印语句:

for element in data:
    print (element) 

您可以使用 '\t':

for element in data:
    print str(element[0])+'\t'+str(element[1])

MSG1    3030
MEMORYSPACE 3039
NEWLINE 3040
NEG48   3041

不幸的是,因为您的第一个元素有时会更长,请尝试先打印数字:

for element in data:
    print str(element[1])+'\t'+str(element[0])

3030    MSG1
3039    MEMORYSPACE
3040    NEWLINE
3041    NEG48

您可以试试下面的方法。由于第二个元素是整型值,打印前需要转成string类型

>>> for x,y in data:
        print(x+"\t"+str(y))


MSG1    3030
MEMORYSPACE 3039

如果可能的话,我会先打印数字:

for i in lst:
    print i[1],'\t',i[0]

你可以按照最长的单词来判断:

longest = max([len(x[0]) for x in data])

for j in data:
    a = j[0].ljust(longest)
    b = str(j[1])
    print(' '.join([a, b]))

这是输出:

MSG1        3030
MEMORYSPACE 3039
NEWLINE     3040
NEG48       3041

你试过了吗format

max_len = max([len(x[0]) for x in data])

for element in data:
    print '{value0:{width0}} {value1}'.format(value0=element[0],
                                              width0=max_len,
                                              value1=element[1])

示例输出:

MSG1        3030
MEMORYSPACE 3039
NEWLINE     3040
NEG48       3041

您还可以通过将 > 添加到格式说明符来右对齐:

    ...
    print '{value0:>{width0}} {value1}'.format(
    ...

产生:

       MSG1 3030
MEMORYSPACE 3039
    NEWLINE 3040
      NEG48 3041