我有这个列表清单:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
Run Code Online (Sandbox Code Playgroud)
我必须转换成这个表:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
Run Code Online (Sandbox Code Playgroud)
对我来说,诀窍是将"线"转换成列(即苹果,橙子,樱桃,同一列下的香蕉)
我尝试过不同的选择(A):
for row in tableData:
output = [row[0].ljust(20)]
for col in row[1:]:
output.append(col.rjust(10))
print(' '.join(output))
Run Code Online (Sandbox Code Playgroud)
选项(B):
for i in tableData:
print( i[0].ljust(10)+(str(i[1].ljust(15)))+(str(i[2].ljust(15)))+
(str(i[3].ljust(15))))
Run Code Online (Sandbox Code Playgroud)
似乎没有人能解决这个问题.
在此先感谢您的任何建议.
要转置表格,请使用zip-and-splat技巧.
要左对齐或右对齐单元格,请使用格式规范语言:
>>> for row in zip(*tableData):
... print '{:<10}{:>7} {:<10}'.format(*row)
...
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
Run Code Online (Sandbox Code Playgroud)
“翻转”嵌套列表的最简单方法是使用zip:
for fruit, name, animal in zip(*tableData):
print(fruit.ljust(10), name.ljust(10), animal.ljust(10))
Run Code Online (Sandbox Code Playgroud)
这打印:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2037 次 |
| 最近记录: |