2014-09-19 93 views
0

嵌套列表考慮蟒以下列表:排列在python

[[[1, 2], [3, 4], [5, 6], [7, 8]], 
[['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h']], 
[[21, 22], [23, 24], [25, 26], [27, 28]]] 

頂層列表包含3點列表中的值,後者又包括4名單獨的列表。 我需要按以下順序這些本名單安排:

[[1, 2, 'a', 'b', 21, 22], 
[3, 4, 'c', 'd', 23, 24], 
[5, 6, 'e', 'f', 25, 26], 
[7, 8, 'g', 'h', 27, 28]] 

我試圖實現使用itertools這一要求,for循環,列表理解等,但無法得到它。你能否給我提供必要的python代碼來完成這個要求?

回答

2

這裏需要使用zip(),然後拉平所產生的元組子列表:

[[i for sub in combo for i in sub] for combo in zip(*inputlist)] 

演示:

>>> inputlist = [[[1, 2], [3, 4], [5, 6], [7, 8]], 
... [['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h']], 
... [[21, 22], [23, 24], [25, 26], [27, 28]]] 
>>> [[i for sub in combo for i in sub] for combo in zip(*inputlist)] 
[[1, 2, 'a', 'b', 21, 22], [3, 4, 'c', 'd', 23, 24], [5, 6, 'e', 'f', 25, 26], [7, 8, 'g', 'h', 27, 28]] 
1

使用itertoolsmap

>>> from itertools import chain, izip, starmap 
>>> map(list, starmap(chain, izip(*lst))) 
[[1, 2, 'a', 'b', 21, 22], 
[3, 4, 'c', 'd', 23, 24], 
[5, 6, 'e', 'f', 25, 26], 
[7, 8, 'g', 'h', 27, 28]]