2016-12-01 8 views
3

Входы:Как объединить несколько списков поэлементно

l1 = ['a', '', '', ''] 
l2 = ['', 'b', '', ''] 
l3 = ['', '', 'c', ''] 
l4 = ['', '', '', 'd'] 

Ожидаемый результат:

['a', 'b', 'c', 'd'] 

Я попытался

list(map(str.__add__, l1, l2, l3, l4))

выглядит str.__add__ не принимает более двух список объектов.

Любое обходное решение?

Редактировать: Основано на комментарии Джима Фасаракиса-Хиллиарда.

l1 = ['a', '1', '', ''] 
l2 = ['', 'b', '2', ''] 
l3 = ['', '', 'c', ''] 
l4 = ['', '', '', 'd'] 

Ожидаемый результат:

['a', '1b', '2c', 'd'] 

Благодаря

+1

'filter (None, l1 + l2 + l3 + l4)'? – TerryA

+3

Какой должен быть выход, если существуют другие записи? –

+0

он не должен совпадать с другими записями –

ответ

9

Похоже вам нужно zip

[''.join(x) for x in zip(l1, l2, l3, l4)] 
# ['a', 'b', 'c', 'd'] 

Для обновленного ввода:

[''.join(x) for x in zip(l1, l2, l3, l4)] 
# ['a', '1b', '2c', 'd'] 
+1

эй, лучше всего обновить вывод в соответствии с редактированием OP :-) –

+0

Спасибо @Psidom –

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