【问题标题】:Join float list into space-separated string in Python在Python中将浮点列表加入空格分隔的字符串
【发布时间】:2011-06-28 13:45:49
【问题描述】:

我有一个 python 中的浮点数列表:

a = [1.2, 2.9, 7.4]

我想加入他们以产生一个以空格分隔的字符串 - 即:

1.2 2.9 7.4

但是,当我尝试时:

print " ".join(a)

我得到一个错误,因为它们是浮动的,当我尝试时:

print " ".join(str(a))

我明白了

[ 1 . 2 ,   1 . 8 ,   5 . 2 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 ]

如何连接所有元素,同时将元素(单独)转换为字符串,而不必遍历所有元素?

【问题讨论】:

    标签: python list


    【解决方案1】:

    实际上你必须遍历它们。使用看起来很干净的生成器或列表推导:

    print " ".join(str(i) for i in a)
    

    (map 循环遍历它们,格式代码也是如此)

    生成器的优势在于不生成第二个中间列表,从而节省了内存。列表理解将是:

    print " ".join([str(i) for i in a])
    

    【讨论】:

      【解决方案2】:

      您需要将列表的每个条目转换为字符串,而不是一次将整个列表:

      print " ".join(map(str, a))
      

      如果您想更好地控制转换为字符串(例如控制要打印的位数),您可以使用

      print "".join(format(x, "10.3f") for x in a)
      

      the documentation of the syntax of format specifiers

      【讨论】:

      • +1 替代第一个," ".join(str(x) for x in a)(在 Python 2.x 中,这也有一个小的实际优势 - 它不会一次为所有中间字符串分配内存)。
      • 对于格式化字符串,' '.join("%10.3f" % x for x in a) 在我的机器上是 format(x, "10.3f") 版本的两倍(测试了 1000 个 random() 浮动列表)。
      猜你喜欢
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多