2015-08-10 2 views
3

Ищу кратчайшему способ сделать следующее (решение одна линия)Объединить два списка бок о бок

a = ["a", "b", "c"] 
b = ["w", "e", "r"] 

Я хочу следующий вывод:

q = ["a w", "b e", "c r"] 

Конечно, это может быть достигается путем применения цикла for. Но мне интересно, есть ли разумное решение?

+0

импорт itertools; печать [I инт в itertools.imap ((лямбда х, у: х + у), а, б)] – dsgdfg

ответ

5

Вы можете использовать zip в списке понимание:

>>> ['{} {}'.format(*i) for i in zip(a,b)] 
['a w', 'b e', 'c r'] 
1
a = ["a", "b", "c"] 
b = ["w", "e", "r"] 

print(["{} {}".format(_a ,_b) for _a,_b in zip(a,b)]) 
['a w', 'b e', 'c r'] 
8

Вы можете использовать str.join() и zip(), пример -

q = [' '.join(x) for x in zip(a,b)] 

Пример/Demo -

>>> a = ["a", "b", "c"] 
>>> b = ["w", "e", "r"] 
>>> q = [' '.join(x) for x in zip(a,b)] 
>>> q 
['a w', 'b e', 'c r'] 
1

одна линия решение:

[aa+" "+bb for aa,bb in zip(a,b)] 

выход:

['a w', 'b e', 'c r'] 

один лайнер без молнии:

[a[i]+" "+b[i] for i in range(len(a))] 

выход:

['a w', 'b e', 'c r'] 
1

Подробнее pythonic way;

b = map(' '.join,zip(a,b)) 
+0

Я думаю, что списочные более вещий. – Cyphase

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