我在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
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列表.