如何以这种形式显示2D列表?

时间:2017-08-20 09:30:00

标签: python list nested-lists

我如何才能像这样转换2d列表?

lista=[[1, 2, 3],[3, 4, 5],[8, 5, 9]]  to 
listb=[[1 2 3]
       [3 4 5]
       [8 5 9]]

2 个答案:

答案 0 :(得分:3)

正如已经指出的那样,你所拥有的基本上与Python中一个列表的表示基本相同,因此列出转换列表并没有多大意义。但是,如果您想要一个列表进行字符串转换 - 将列表输出为一个很好的字符串的方法,您可以选择pprint或漂亮的打印。这是标准库中的模块,看起来非常接近您正在寻找的内容:

import pprint

l = [[1, 2, 3],[3, 4, 5],[8, 5, 9]]

pprint.pprint(l, width=12)

提供输出

[[1, 2, 3],
 [3, 4, 5],
 [8, 5, 9]]

现在我不得不人为地减少其最大宽度,因为您的列表很短,pprint默认情况下不认为它们值得缩短。

另外,如果你想在你的程序中使用字符串表示,你可以用几乎相同的方式使用pprint.pformat,除了它返回一个字符串:

import pprint

l = [[1, 2, 3],[3, 4, 5],[8, 5, 9]]

s = pprint.pformat(l, width=12)

答案 1 :(得分:2)

我假设你要找的是列表的__repr__ - 它是如何显示的。在语义上,两者是同一个。

但是,如果你想显示这样的列表,你可以这样做。

  1. 使用numpy的简单方法:

    import numpy as np
    
    lst = [[1, 2, 3],[3, 4, 5],[8, 5, 9]]
    print(np.array(lst))
    
    [[1 2 3]
     [3 4 5]
     [8 5 9]]
    
  2. 奇怪的方式,使用vanilla python。

    print('[' + '\n '.join(str(x).replace(',', '') for x in lst) + ']')
    [[1 2 3]
     [3 4 5]
     [8 5 9]]
    
  3. 另一个答案提到pprint.pprint,我认为这是2的简单替代,但灵活性有限。您可以使用pprint.pformat来美化您的列表并删除逗号:

    import pprint
    print(pprint.pformat(lista, width=12).replace(',', ''))
    
    [[1 2 3]
     [3 4 5]
     [8 5 9]]