【问题标题】:Pythonic way to print 2D list -- PythonPythonic 打印二维列表的方式——Python
【发布时间】:2017-12-15 02:39:41
【问题描述】:

我有一个这样的二维字符列表:

a = [['1','2','3'],
     ['4','5','6'],
     ['7','8','9']]

将列表作为一个整体打印的最 Pythonic 方式是什么? IE。没有逗号或括号:

123
456
789

【问题讨论】:

    标签: python list multidimensional-array


    【解决方案1】:

    我认为最好的方法是使用print 函数。使用print 函数,您将不需要任何类型的连接和转换(如果所有对象都不是字符串)。

    >>> a = [['1','2','3'],
    ...      ['4', 5, 6],   # Contains integers as well.
    ...      ['7','8','9']]
    ...
    
    >>> for x in a:
    ...     print(*x, sep='')
    ...
    ...
    123
    456
    789
    

    如果您使用的是 Python 2,则可以使用 from __future__ import print_function 导入打印功能。

    【讨论】:

      【解决方案2】:

      有很多方法。可能是str.joins 的映射的str.join

      >>> a = [['1','2','3'],
      ...          ['4','5','6'],
      ...          ['7','8','9']]
      >>> print('\n'.join(map(''.join, a)))
      123
      456
      789
      >>>
      

      【讨论】:

      • 哦,对了!数组、列表和数组列表……总是把我搞砸!
      • 总是在这里尝试改进一个已经很好的答案:) 可能值得一个长凳来比较 join(map(''join([''.join(x) for x in a])。在后者中,外部join 知道列表和项目的大小并一次性分配输出字符串。
      • @Jean-FrançoisFabre 是的,如果性能真的是个问题,那么实现list 可能会更快。很可能,此代码不会对性能至关重要。从风格和易用性的角度来看,我可以接受。
      • 编译map弥补了listcomp的速度损失。生成器理解将是最慢的。
      • 如果内存不是问题,可以选择上述方法,或者如果您使用的是 Python 3,则可能是 print('\n'.join(list(map(''.join, a))))。无论如何,您可以使用 timeit 对几个大列表进行基准测试模块。确实,文档中的“基本示例”与您的情况非常相似...
      【解决方案3】:

      如果您正在寻找 Pythonic,那么您肯定需要生成器理解:

      print('\n'.join(''.join(i) for i in array))
      

      【讨论】:

      • join 的情况下,传递一个列表理解反而更快,因为join 无论如何都会创建一个(需要预先计算大小):'\n'.join([''.join(i) for i in array]) 即使它更丑:)
      • @Jean-FrançoisFabre 是的,here's where the conversion happens.
      • 感谢@Jean-FrançoisFabre,我不知道。 OTOH,OP没有要求最快的方法。 ;-)
      【解决方案4】:

      像这样:

      import os
      
      array = [['1','2','3'],
               ['4','5','6'],
               ['7','8','9']]
      print(os.linesep.join(map(''.join, array)))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-24
        • 2020-07-29
        • 1970-01-01
        • 2014-07-06
        相关资源
        最近更新 更多