如何将列表列表打印为合理的表格格式

时间:2019-06-14 08:29:44

标签: python python-3.x nested-lists python-3.7

我希望能够使用函数将列表列表(我们可以假设内部列表的长度都相等)转换为合理表。

到目前为止,我已经尝试了以下方法,但这不能证明该表的合理性。

我还需要了解zip在做什么?使用* v时,我可以始终打开包装吗?

我能解释为什么我需要做* v来解开元组而不是仅在下面的代码中使用* Data吗?

def printTables(Data):
    for v in zip(*Data):
        print(*v)          

printTables(tableData)



Input:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

Output:

apples Alice  dogs
 oranges   Bob  cats
cherries Carol moose
  banana David goose

2 个答案:

答案 0 :(得分:2)

使用熊猫将解决您的所有问题

import pandas as pd

df = pd.DataFrame(tableData).transpose()
print(df)

          0      1      2
0    apples  Alice   dogs
1   oranges    Bob   cats
2  cherries  Carol  moose
3    banana  David  goose

原生Python

for i, j, k in zip(*tableData):
    print('{:<12} {:<12} {:<12}'.format(i, j, k))

apples       Alice        dogs
oranges      Bob          cats
cherries     Carol        moose
banana       David        goose

答案 1 :(得分:0)

您是否必须在本机Python中执行此操作?熊猫DataFrames可以让您自然地处理表格数据。您可以直接从列表列表创建DataFrame:

import pandas as pd
df = pd.DataFrame(tableData)
print(df)

Zip将遍历您在单独的参数中为其指定的每个列表的第i个元素。例如。 zip(list1, list2, list3)。 *运算符会将一个iterable转换为不同的参数。因此,如果您有一个列表list4 = [list1, list2, list3],则可以将列表元素作为参数传递给zip(*list4)函数。 print()函数将在每个参数之间打印空格,因此,如果您使用*运算符传递可迭代对象(例如元组),它将在可迭代对象中打印每个元素。