2013-05-01 34 views
0

2列出都是這樣的,Python列表位置上的元組

a=[(id,  name, value_1, value_2),(id, name, value_3, value_4)..] 
b=[(id_key, name, value_5, value_6),(id_key,name, value_7, value_8)..] 

我想合併像這樣,

c=[(id,'', name, value_1, value_2), 
    (id,'', name, value_3, value_4), 
    .. 
    .. 
    ('', id_key,name , value_5, value_6), 
    ('', id_key,name , value_7, value_8) 
    .. 
] 

因此,第二列表將串聯與會員第一個列表轉移。

最好的辦法是做什麼?

回答

2

使用兩列表解析從舊建新元組

[(t[0], '') + t[1:] for t in a] + [('',) + t for t in b] 

演示:

>>> a=[('id',  'name', 'value_1', 'value_2'),('id', 'name', 'value_3', 'value_4')] 
>>> b=[('id_key', 'name', 'value_5', 'value_6'),('id_key','name', 'value_7', 'value_8')] 
>>> [(t[0], '') + t[1:] for t in a] + [('',) + t for t in b] 
[('id', '', 'name', 'value_1', 'value_2'), ('id', '', 'name', 'value_3', 'value_4'), ('', 'id_key', 'name', 'value_5', 'value_6'), ('', 'id_key', 'name', 'value_7', 'value_8')] 
+1

FGITW'd由15秒左右......爆炸。 – mgilson 2013-05-01 14:42:37

+0

@mgilson一個不會簡單擊敗Martijn Pieters。 :) – 2013-05-01 14:49:25

+0

@Martijn - 謝謝。答案已被接受。 – NullException 2013-05-01 15:03:55