2013-07-21 31 views
-4

我從SQL查詢檢索的數據Python的 - 如何變換元組的列表和元組

我有一個像元組的列表:

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

,我想有一個字符串像(34.2424,-64.2344,76.3534,45.2344,)

是否有一個函數可以做到這一點?

通知的','在每個元組的結尾......我很難擺脫它

+0

請試着問 –

+1

請否決前的小病人之前在谷歌搜索,我的問題還沒有完撰寫... –

+0

你應該尋找蟒蛇答案爲「扁平化嵌套序列。」我也聯繫了一個很好的方法來解決我的問題。 – erewok

回答

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,使之成爲海峽,如果你想這樣...

+1

「印刷」功能版本的竅門。 – kindall

0
" ".join(tuple) 

將做的工作,假設你想空間分隔。

-2

字符串的join函數將做到這一點。

print " ".join(arrayOfValuesYouWantToJoinTogether) 
+0

爲什麼downvotes?! – will

1

str.join()僅適用於字符串,因此您必須先將它們轉換爲字符串。我可以寫出來,但我只是在Python Cookbook(我最喜歡的書)中閱讀了一些關於此的內容,所以我會link to that instead。比茲利和瓊斯寫的打印這樣的元組,而不是轉向每一個成一個字符串,你可以簡單地做:

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

當你的元組嵌套在列表裏面,你可以遍歷列表和這樣打印出來,或者你可以在使用它之前將列表平坦化(並且在SO上有很多答案,並且在Python Cookbook中有一個很好的解決嵌套序列的問題)。

編輯:我注意到標題改變爲一個請求,將元組列表平鋪到一個元組,這是一個扁平化嵌套序列請求。

我會鏈接到Python的菜譜食譜我上面提到所謂的「扁平化嵌套序列」,並再次聲明,有在SO很多答案在這個位置:「Flattening a Nested Sequence

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,()))