【问题标题】:Format all elements of a list格式化列表的所有元素
【发布时间】:2010-05-04 00:22:26
【问题描述】:

我想打印一个数字列表,但我想在打印之前格式化列表中的每个成员。 例如,

theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]

我希望将上面的列表作为输入打印以下输出:

[1.34, 7.42, 6.97, 4.55]

对于列表中的任何一个成员,我知道我可以使用格式化它

print "%.2f" % member

是否有可以对整个列表执行此操作的命令/函数?我可以写一个,但想知道是否已经存在。

【问题讨论】:

    标签: python list string-formatting python-2.x


    【解决方案1】:

    如果您只想打印数字,可以使用简单的循环:

    for member in theList:
        print "%.2f" % member
    

    如果您想存储结果以备后用,您可以使用列表推导:

    formattedList = ["%.2f" % member for member in theList]
    

    然后您可以打印此列表以获得问题中的输出:

    print formattedList
    

    另请注意,% 已被弃用。如果您使用的是 Python 2.6 或更新版本,请使用format

    【讨论】:

    • 谢谢!这很棒。我还不知道如何使用format。但会学习。
    【解决方案2】:

    对于 Python 3.5.1,您可以使用:

    >>> theList = [1.343465432, 7.423334343, 6.967997797, 4.5522577]
    >>> strFormat = len(theList) * '{:10f} '
    >>> formattedList = strFormat.format(*theList)
    >>> print(formattedList)
    

    结果是:

    '  1.343465   7.423334   6.967998   4.552258 '
    

    【讨论】:

    • 我使用strFormat = '[' + (len(theList)-1) * '{:10f}, ' + '{:10f}]'修改了这个
    【解决方案3】:

    使用 "".format() 和生成器表达式的非常简短的解决方案:

    >>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]
    
    >>> print(['{:.2f}'.format(item) for item in theList])
    
    ['1.34', '7.42', '6.97', '4.55']
    

    【讨论】:

      【解决方案4】:

      您可以使用列表推导、连接和一些字符串操作,如下所示:

      >>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]
      >>> def format(l):
      ...     return "["+", ".join(["%.2f" % x for x in l])+"]"
      ... 
      >>> format(theList)
      '[1.34, 7.42, 6.97, 4.55]'
      

      【讨论】:

        【解决方案5】:

        你可以使用地图功能

        l2 = map(lambda n: "%.2f" % n, l)
        

        【讨论】:

          【解决方案6】:

          如果你不需要保存你的值,试试这个:

          list = [0.34555, 0.2323456, 0.6234232, 0.45234234]
          for member in list:
              form='{:.1%}'.format(member)
              print(form)
          

          输出:

          34.6%
          23.2%
          62.3%
          45.2%
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-02-07
            • 2015-07-16
            • 1970-01-01
            • 2011-03-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多