2016-01-13 213 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()对列表进行排序

相关问题