Python - 如何将元组列表转换为元组

时间:2013-07-21 20:54:15

标签: python

我从sql查询和

中检索数据

我有一个像元组的列表:

[(34.2424,), (-64.2344,) (76.3534,), (45.2344,)]

我希望有一个字符串(34.2424,-64.2344,76.3534,45.2344,)

是否存在能够做到这一点的功能?

注意每个元组末尾的',' ......我很难摆脱它

5 个答案:

答案 0 :(得分:2)

如果你使用的是Python 2.x,那么你可以使用:

>>> a = [(34.2424, -64.2344, 76.3534, 45.2344)]
>>> print ' '.join(map(str, a[0]))
'34.2424 -64.2344 76.3534 45.2344'

在Python 3.x或带有from __future__ import print_function的Python 2.x中,您可以使用:

>>> print(*a[0])
34.2424 -64.2344 76.3534 45.2344

您似乎更新了输入数据的格式,因此:

每个元组的第一个元素......

>>> a = [(34.2424,), (-64.2344,), (76.3534,), (45.2344,)]
>>> print ' '.join(str(el[0]) for el in a)
34.2424 -64.2344 76.3534 45.2344

每个元组中有多个元素......

>>> from itertools import chain
>>> print(*chain.from_iterable(a))
34.2424 -64.2344 76.3534 45.2344

但是,你似乎只想要一个元组......

>>> tuple(chain.from_iterable(a))
(34.2424, -64.2344, 76.3534, 45.2344)

如果您愿意,可以使用str将其设为str ...

答案 1 :(得分:1)

str.join()仅适用于字符串,因此必须先将它们转换为字符串。我可以写出来,但我刚刚在Python Cookbook(我最喜欢的新书)中读到了这个,所以我会link to that instead。 Beazley和Jones写道,要打印这样的元组,而不是将每个元素转换成字符串,你可以简单地做:

tup = (34.2424, -64.2344, 76.3534, 45.2344)
print(*tup)

当你的元组嵌套在一个列表中时,你可以遍历列表并进行打印,或者你可以在使用之前将列表弄平(并且在SO上有很多答案,而且在Python Cookbook,用于展平嵌套序列。)

编辑:我注意到标题已更改为将元组列表展平为元组的请求,这是一个展平嵌套序列请求。

我将链接到我上面提到的称为“展平嵌套序列”的Python Cookbook配方,并再次声明在此处有很多答案:“Flattening a Nested Sequence

答案 2 :(得分:1)

抱歉,我误解了你的问题,但没有投票。

>>> data = [(34.2424,), (-64.2344,), (76.3534,), (45.2344,)]
>>> data_str = '(' + ', '.join(map(lambda x: str(x[0]), a)) + ')'
>>> print data_str
(34.2424, -64.2344, 76.3534, 45.2344)
>>> 

或者只是展平列表并使用str将结果元组作为字符串。

>>> data_str = str(sum(data, ()))

答案 3 :(得分:0)

" ".join(tuple)

假设您想要空间分隔符,我们会完成这项工作。

答案 4 :(得分:-2)

字符串的join功能可以实现。

print " ".join(arrayOfValuesYouWantToJoinTogether)