У меня есть два списка строки:Как объединить два списка строки в Python
a = ['a', 'b', 'c']
b = ['d', 'e', 'f']
Я должен привести:
['ad', 'be', 'cf']
Какой самый вещий способ сделать это?
У меня есть два списка строки:Как объединить два списка строки в Python
a = ['a', 'b', 'c']
b = ['d', 'e', 'f']
Я должен привести:
['ad', 'be', 'cf']
Какой самый вещий способ сделать это?
Вероятно, с 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')]
Вы можете использовать zip
>>> a = ['a', 'b', 'c']
>>> b = ['d', 'e', 'f']
>>> [ai+bi for ai,bi in zip(a,b)]
['ad', 'be', 'cf']
Как насчет:
[c + d for c,d in zip(a,b)]
Вы можете использовать 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']
Вы можете использовать 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
уже возвращает итератор).
Это также работает с произвольным количеством списков, используя 'zip (* list_of_lists)'. – jrmyp
Да. Также имейте в виду, что вы можете использовать '' 'оператор для un'zip' вещей:' list (zip (* c)) 'производит' [('a', 'b', 'c'), ('d ',' e ',' f ')] '. – TigerhawkT3