2015-06-16 2 views

ответ

7

Вероятно, с zip:

c = [''.join(item) for item in zip(a,b)] 

Вы также можете поместить несколько подсписки в один большой итерацию и использовать оператор * распаковать его, проходя каждый подсписок как отдельный аргумент zip:

big_list = (a,b) 
c = [''.join(item) for item in zip(*biglist)] 

Вы можете даже использовать оператор * с zip, чтобы перейти в другом направлении:

>>> list(zip(*c)) 
[('a', 'b', 'c'), ('d', 'e', 'f')] 
+1

Это также работает с произвольным количеством списков, используя 'zip (* list_of_lists)'. – jrmyp

+0

Да. Также имейте в виду, что вы можете использовать '' 'оператор для un'zip' вещей:' list (zip (* c)) 'производит' [('a', 'b', 'c'), ('d ',' e ',' f ')] '. – TigerhawkT3

1

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

>>> a = ['a', 'b', 'c'] 
>>> b = ['d', 'e', 'f'] 

>>> [ai+bi for ai,bi in zip(a,b)] 

['ad', 'be', 'cf'] 
0

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

zip(a,b) 
[('a', 'd'), ('b', 'e'), ('c', 'f')] 

[x+y for x,y in zip(a,b)] 
['ad', 'be', 'cf'] 

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

[j+b[i] for i,j in enumerate(a)] 
['ad', 'be', 'cf'] 
0

Вы можете использовать lambda вместе с map:

map(lambda x,y:x+y,a,b) 

Или добавить zip управлять более чем в 2 списка:

map(lambda x:''.join(x), zip(a,b,c)) 

Для питона < 3 Я бы предпочел первый вариант или заменить zip() для izip(), для python 3 изменение не требуется (zip уже возвращает итератор).

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