2016-01-13 4 views
3

Я хочу объединить 3 списка в один список в python. Например, у меня есть три списка выглядит:python merge 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] 

из а, б, в

есть какие-либо более быстрый способ объединить эти 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, почтовый индекс возвращается список кортежей , поэтому вам нужно обернуть значения в список перед выполнением добавления. – 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() для сортировки списка

 Смежные вопросы

  • Нет связанных вопросов^_^