Python中的数据表
我在Python中有一个二维列表,长得像这样:
[['Something', 'Something else', 'Another thing'],
['Other things', 'More data', 'Element'],
['Stuff', 'data', 'etc']]
我希望它能被打印成这样:
Something Something else Another thing Other things More data Element Stuff data etc
6 个回答
1
from itertools import chain
ll = [['Something', 'Something else', 'Another thing'],
['Other things', 'More data', 'Element'],
['Stuff', 'data', 'etc']]
# get the length of the longest item.
# For simplicity, I use the same width for all columns
a = max(len(s) for s in chain.from_iterable(ll)) + 1
# make a format string with the max
f = ('{:<' + str(a) + '}').format
# print the list
print '\n'.join(''.join(f(s) for s in sl) for sl in ll)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
2
你可以使用字符串的 format
方法,或者更早的字符串插值运算符,把字符串放进固定长度的字段里。具体可以查看 格式字符串 的文档。
使用这个方法的循环也不一定会很难看。
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
这里,首先通过 zip(*l)
将列表进行转换:每个子列表都作为一个独立的参数传递给 zip()
。结果是一个新的列表,它把每个旧列表中相同位置的元素组合在一起,所以你会得到 [['Something', 'Other things', 'Stuff'], ['Something else', 'More data', 'data'], ...]
。
接着,长度需要匹配的元素会在同一个 column
中。在这些 column
中,字符串会通过 ljust()
方法调整到该组中最长的长度。
之后,调整长度后的新列表会再次进行转换,方法和上面一样,然后用 " "
将各个部分连接起来。
最后,生成的这个一维列表会逐个打印出来。