2013-06-27 262 views
-2

我有一個這樣的名單:僅在Python中將這個列表,元組轉換成列表?

[[(2L,)], [(3L,)]] 

我想轉換成到列表中,如:

[2, 3] 

我怎樣才能做到這一點?

+2

這是水平嵌套的是已知的和恆定的? – oleg

+3

閱讀你的問題,答案很可能是'[lst [0] [0] [0],lst [1] [0] [0]]''。如果這不是你想要的,請添加一些細節。 – Elazar

回答

5

使用列表理解:

如果元組只包含1項:

>>> lis = [[(2L,)], [(3L,)]] 
>>> [ y[0] for x in lis for y in x] 
[2L, 3L] 

如果元組包含超過1項:

>>> [z for x in lis for y in x for z in y] 
[2L, 3L] 

這將爲任何嵌套的工作量:

from collections import Iterable 
def flatten(collection): 
    for element in collection: 
    if isinstance(element, Iterable) and not isinstance(element, basestring): 
     for x in flatten(element): 
     yield x 
    else: 
     yield element 
>>> list(flatten(lis)) 
[2L, 3L] 
>>> lis = [[(2L,)], [(3L,(4,(5,)))]] 
>>> list(flatten(lis)) 
[2L, 3L, 4, 5] 
0

使用列表理解和長轉換爲int:

>>> L = [[(2L,)], [(3L,)]] 
>>> result = [int(y[0]) for x in L for y in x] 
>>> result 
[2, 3] 
0

爲了擺脫尾隨升,使用int()

>>> L = [[(2L,)], [(3L,)]] 
>>> [int(i[0][0]) for i in L] 
[2, 3] 
0
>>> d = [[(2L,)], [(3L,)]] 
>>> map(lambda x: x[0][0], d) 
[2L, 3L] 
+2

我不認爲在列表理解更具可讀性的地方使用'map'是不錯的主意。 – Elazar

+0

等價列表理解:'[x [0] [0] for x in d]'。 – michaelb958

相關問題