2016-01-13 206 views
3

我想將3個列表合併到python中的單個列表中。 例如,我有三個列表如下:python將3個列表合併到1個列表中

a = [0, 3, 6, 9] 
b = [1, 4, 7, 10] 
c = [2, 5, 8, 11] 

終於想

merged = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 

出A,B的,C

有沒有合併這3所列出任何更快的方法? 這裏是我的代碼

merged=[] 
a = [0, 3, 6, 9] 
b = [1, 4, 7, 10] 
c = [2, 5, 8, 11] 
for i in range(0, len(a)) : 
    merged.append(a[i]) 
    merged.append(b[i]) 
    merged.append(c[i]) 

回答

7
import itertools as it 

list(it.chain.from_iterable(it.izip(a,b,c))) 
2
a = [0, 3, 6, 9] 
b = [1, 4, 7, 10] 
c = [2, 5, 8, 11] 
d=[] 
print [j for i in zip(a,b,c) for j in i] 

輸出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

1

減少使用另一種選擇是:

>>> a = [0, 3, 6, 9] 
b = [1, 4, 7, 10] 
c = [2, 5, 8, 11] 
>>> reduce(lambda x, y: list(x)+list(y), zip(a,b, c)) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
+0

@Baruchel,拉鍊將返回一個元組列表合併列表將包含ABC的所有值列表,因此您需要在添加之前將值包裝到列表中。 – Netwave

0

你可以這樣說:

a = [0, 3, 6, 9] 
b = [1, 4, 7, 10] 
c = [2, 5, 8, 11] 
merged=a+b+c 
merged.sort() 

既然要添加,但不是在正確的order.That。這就是爲什麼我用的.sort()對列表進行排序

相關問題