【问题标题】:print list of list in column as in excel在列中打印列表列表,如在 excel 中一样
【发布时间】:2023-04-06 12:22:01
【问题描述】:

对不起,如果这是一个菜鸟问题。

我有一个列表,例如"a",它在a1,a2,a3 内有两个或树列表,例如:

[ [1,2], [0,0,0], [1,2,3,4,5] ]
[ [1,2,3,4], [0,0], [1,2,3]   ]

等等……

里面的每个列表的长度都不一样,所以当我做一个简单的时候

for i in range(len(a)):
    print(a[i])

结果是:

[[1,2],[0,0,0],[1,2,3,4,5]]
[[1,2,3,4],[0,0],[1,2,3]]

虽然我正在等待列表中的元素在列中对齐的结果:

[[1,2]          [0,0,0]      [1,2,3,4,5]]
[[1,2,3,4]      [0,0]        [1,2,3]]

我该怎么做?

提前感谢您的帮助。

【问题讨论】:

  • 这能回答你的问题吗? Print Excel workbook using python
  • @BSQL 这完全不是重复的。它是关于文件的实际打印(使用打印机)。 OP 询问打印到屏幕

标签: excel python-3.x list printing element


【解决方案1】:

您可以使用字符串的ljust方法将列表按照最大对齐:

a = [[[1, 2], [0, 0, 0], [1, 2, 3, 4, 5]],
     [[1, 2, 3, 4], [0, 0], [1, 2, 3]]]

size = max([len(str(x)) for sub in a for x in sub]) + 4

for sub in a:
    for x in sub:
        print(str(x).ljust(size), end="")
    print()

这给了:

[1, 2]             [0, 0, 0]          [1, 2, 3, 4, 5]    
[1, 2, 3, 4]       [0, 0]             [1, 2, 3]   

使用一个循环和join 方法的另一种选择可能是:

for sub in a:
    print(''.join((str(x).ljust(size) for x in sub)))

【讨论】:

    【解决方案2】:

    另一种快速而肮脏的方法,使用str.format

    a = [[ [1,2], [0,0,0], [1,2,3,4,5] ],
         [ [1,2,3,4], [0,0], [1,2,3]   ],
         [ [1], [2,2]],
         []]
    
    max_sublist = max(a, key=len)
    max_len = len(str(max((i for subl in a for i in subl), key=lambda k: len(str(k)))))
    
    for subl in a:
        print('[{}]'.format(('{!s:<{width}}' * len(max_sublist)).format(*subl, *' '*len(max_sublist), width=max_len)))
    

    打印:

    [[1, 2]         [0, 0, 0]      [1, 2, 3, 4, 5]]
    [[1, 2, 3, 4]   [0, 0]         [1, 2, 3]      ]
    [[1]            [2, 2]                        ]
    [                                             ]
    

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 2019-11-29
      • 2016-06-05
      • 2022-12-10
      • 1970-01-01
      • 2012-08-24
      • 2020-07-31
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多