【问题标题】:How to print a list of lists into a justified tablular format [duplicate]如何将列表列表打印成合理的表格格式[重复]
【发布时间】:2019-10-28 20:46:18
【问题描述】:

我希望能够使用函数将列表列表(我们可以假设内部列表长度相同)转换为对齐表格。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      使用 pandas 将解决您的所有问题

      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
      

      【讨论】:

        猜你喜欢
        • 2018-10-10
        • 2021-12-31
        • 1970-01-01
        • 2014-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-06
        • 2013-10-24
        相关资源
        最近更新 更多