在Python中将浮点数列表连接成以空格分隔的字符串

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 ]

如何将所有元素连接在一起,同时将这些元素(逐个)转换为字符串,而无需循环遍历它们?

2个回答

98

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

print " ".join(map(str, a))
如果您想更好地控制转换为字符串的过程(例如,控制打印几位数字),则可以使用:
print "".join(format(x, "10.3f") for x in a)

请参阅 格式说明符语法的文档


13
与第一种方法不同,另一种方法是使用" ".join(str(x) for x in a)。在Python 2.x中,这种方式还有一个小实际优点——它不会一次性为所有中间字符串分配内存。 - user395760
3
对于格式化字符串来说,在我的机器上使用' '.join("%10.3f" % x for x in a)比使用format(x, "10.3f")版本快两倍(使用1000个random()浮点数的列表进行测试)。 - Greg Haskins

6

实际上你需要循环遍历它们。使用生成器或列表推导式可以让代码看起来更简洁:

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

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

与列表推导式相比,生成器的优势在于不生成第二个中间列表,从而保留内存。列表推导式将会是:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接