2014-03-06 104 views
0

以下列表理解以我希望的方式工作。我的問題是,有沒有辦法編寫代碼而不必包含所有特定的元素索引?目標是根據所包含的輸出結果將各個子列表的成員與各自的外部成員合併。帶有嵌套列表(子列表)的列表理解

myList = [['pKey_a', ['va1', 'va2', 'va3', 'va4']], ['pKey_b', ['vb1', 'vb2', 'vb3', 'vb4']], ['pKey_c', ['vc1', 'vc2', 'vc3', 'vc4']], ['pKey_d', ['vd1', 'vd2', 'vd3', 'vd4']], ['pKey_e', ['ve1', 've2', 've3', 've4']]] 

myListComp = [[d[0], d[1][0], d[1][1], d[1][2], d[1][3]] for d in myList] 

print myListComp 
''' 
[ 
['pKey_a', 'va1', 'va2', 'va3', 'va4'], 
['pKey_b', 'vb1', 'vb2', 'vb3', 'vb4'], 
['pKey_c', 'vc1', 'vc2', 'vc3', 'vc4'], 
['pKey_d', 'vd1', 'vd2', 'vd3', 'vd4'], 
['pKey_e', 've1', 've2', 've3', 've4'] 
] 
''' 

回答

3

使用連接列表:

myListComp = [d[:1] + d[1] for d in myList] 

演示:

>>> myList = [['pKey_a', ['va1', 'va2', 'va3', 'va4']], ['pKey_b', ['vb1', 'vb2', 'vb3', 'vb4']], ['pKey_c', ['vc1', 'vc2', 'vc3', 'vc4']], ['pKey_d', ['vd1', 'vd2', 'vd3', 'vd4']], ['pKey_e', ['ve1', 've2', 've3', 've4']]] 
>>> [d[:1] + d[1] for d in myList] 
[['pKey_a', 'va1', 'va2', 'va3', 'va4'], ['pKey_b', 'vb1', 'vb2', 'vb3', 'vb4'], ['pKey_c', 'vc1', 'vc2', 'vc3', 'vc4'], ['pKey_d', 'vd1', 'vd2', 'vd3', 'vd4'], ['pKey_e', 've1', 've2', 've3', 've4']] 
+0

這一工作,並會接受的答案。 –