我有两个字符串列表:
a = ['a', 'b', 'c']
b = ['d', 'e', 'f']
I should result:
['ad', 'be', 'cf']
什么是最具Python风格的方法来完成这个任务?
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']
你也可以在列表推导式中使用enumerate:
[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))
对于 Python < 3,我更喜欢前一种选择或者将 zip()
替换为 izip()
。对于 Python 3,这个改变是不必要的(zip
已经返回一个迭代器)。
zip(*list_of_lists)
。 - jrmyp*
运算符来解压缩内容:list(zip(*c))
会产生[('a','b','c'),('d','e','f')]
。 - TigerhawkT3