2012-07-07 34 views
1

我想加入列表中的一組元組。加入列表中的元組

例如,

[(1, 2, 3), (1, 2, 4), (1, 2, 5)] 

將成爲

[123, 124, 125] 

(or ['123', '124', '125'] if it must become a string) 

我不知道如何做到這一點,和搜索返回很少使用。

我該如何解決這個問題?

+0

你總是有一個長度爲3 ? – phg 2012-07-07 08:46:04

+0

是的,雖然長度可能會變成3以外的東西,但所有元組的長度都是相同的 – nebffa 2012-07-07 08:47:10

回答

3
>>> bs = [(1, 2, 3), (1, 2, 4), (1, 2, 5)] 

>>> ["".join(map(str, b)) for b in bs] 
['123', '124', '125'] 

使用int()轉換,如果結果必須是數字

+0

Thankyou - 這是完美的 – nebffa 2012-07-07 08:51:00

+0

實際上,更簡單的生成整數的方法是[int(「」。join(map(str ,b)))for b in bs]。哦,你得到它就像我張貼;) – nebffa 2012-07-07 08:52:29

+0

@ BenLucato你說得對。相應修改 – 2012-07-07 08:53:21

2

你可以試試這個:

>>> [int(''.join(str(v) for v in val)) for val in [(1, 2, 3), (1, 2, 4), (1, 2, 5)]] 
[123, 124, 125] 
>>> 

請注意,如果你希望他們爲字符串你不需要把它們轉換成int

+0

不需要'[]'內部連接。 – 2012-07-07 08:51:16

+0

是的,我只是因爲習慣而堅持LC ......;)儘管通用電氣似乎也相當驚人。 – 2012-07-07 08:54:52

3

使用這種包裝圍繞減少將處理任何非零長度的元組:

>>> combinedigits = lambda seq : reduce(lambda a,b:a*10+b, seq) 
>>> combinedigits((1,2,3)) 
123 

使用地圖,每個元組的傳遞給combinedigits功能:

>>> data = [(1, 2, 3), (1, 2, 4), (1, 2, 5), (1,2,3,4,5,6,7,9)] 
>>> map(combinedigits, data) 
[123, 124, 125, 12345679]