2017-08-30 63 views
-2

我怎麼壓扁這個名單:Python的 - 拉平不規則列表

irr_list = [[[u'Animal Collective'], u'Lion in a Coma'], [[u'Animal Collective'], u'Hocus Pocus'], [[u'Animal Collective'], u'Vertical'], [[u'Animal Collective'], u'Natural Selection'], [[u'Animal Collective'], u'Spilling Guts'], [[u'Animal Collective'], u'Recycling']] 

這種期望的輸出?

output = [[u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Recycling']] 

我曾嘗試:

flattened = [val for sublist in irr_list for val in sublist] 

無濟於事

+2

那麼,它總是'[「動物集體」],「...」]'?只需在[irr_list]中['[[i] [0],i [1]]' – TerryA

+0

你試過了什麼?查看[如何提問](https://stackoverflow.com/help/how-to-ask)wiki。 –

+0

請參考編輯 – outkast

回答

1

如果您的列表始終是形式[[list, element], [list, element], ...]的,那麼你可以用一個列表理解

output = [[l[0], e] for l, e in irr_list] 
0

你可以試試這個:

import itertools 

new_data = [list(itertools.chain.from_iterable([[b] if not isinstance(b, list) else b for b in i])) for i in irr_list] 

輸出:

[[u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Recycling']]