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

2024-04-25 00:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够使用函数将一个列表列表(我们可以假设内部列表的长度都相等)转换为一个对齐的表。你知道吗

到目前为止,我已经尝试了下面的,但这并不能证明这张表是正确的。你知道吗

我还需要了解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

Tags: 列表datazipbananabobdavidalicedogs
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

您必须用本机Python执行此操作吗?Pandas DataFrames可以让您自然地处理表格数据。您可以直接从列表列表中创建数据框:

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

Zip将遍历您在单独参数中给出的每个列表的第i个元素。例如zip(list1, list2, list3)。*运算符将iterable转换为不同的参数。因此,如果您有一个列表list4 = [list1, list2, list3],您可以将列表元素作为参数传递给函数zip(*list4)print()函数将打印每个参数之间的空白,因此,如果用*运算符传递iterable(如元组),它将打印iterable中的每个元素。你知道吗

相关问题 更多 >