如何在Python中合并两个字符串列表

3

我有两个字符串列表:

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

I should result:

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

什么是最具Python风格的方法来完成这个任务?
5个回答

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
是的。还要记住,您可以使用*运算符来解压缩内容: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']

1
怎么样:
[c + d for c,d in zip(a,b)]

0

您可以使用zip

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

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

你也可以在列表推导式中使用enumerate:

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

0
您可以使用lambdamap一起使用:
map(lambda x,y:x+y,a,b)

或者添加zip来管理超过2个列表:

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

对于 Python < 3,我更喜欢前一种选择或者将 zip() 替换为 izip()。对于 Python 3,这个改变是不必要的(zip 已经返回一个迭代器)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接