Python中的数据表

Dan*_*nka 3 python formatting

我在Python中有一个2D列表,如下所示:

[['Something', 'Something else', 'Another thing'],
 ['Other things', 'More data', 'Element'],
 ['Stuff', 'data', 'etc']]
Run Code Online (Sandbox Code Playgroud)

我希望它像这样打印出来:

    Something    Something else Another thing
    Other things More data      Element
    Stuff        data           etc

glg*_*lgl 7

l = [['Something', 'Something else', 'Another thing'],
     ['Other things', 'More data', 'Element'],
     ['Stuff', 'data', 'etc']]
sub1 = [
    [s.ljust(max(len(i) for i in column)) for s in column]
    for column in zip(*l)]
for p in [" ".join(row) for row in zip(*sub1)]: print p
Run Code Online (Sandbox Code Playgroud)

这里,首先将列表转换为zip(*l):每个子列表都作为自己的参数传递给zip().结果是一个列表,它结合了每个旧列表的第n个条目,所以你得到了[['Something', 'Other things', 'Stuff'], ['Something else', 'More data', 'data'], ...].

那么长度要匹配的条目是相同的column.在这些中column的每一个中,字符串被ljust()编辑为组中的最大长度.

之后,再次转换具有调整长度的新列表 - 以与上面相同的方式 - 并且使用" "中间连接组件.

然后按条目打印生成的1D列表.