一尘不染

明智的元素串联多个列表(字符串列表的列表)

python

我有一个字符串列表如下

lst = [['a','b','c'],['@','$','#'],['1','2','3']]

我想明智地将list元素内的每个字符串连接起来,预期输出如下:

['a@1','b$2','c#3']

的大小lst可以变化。有没有任何方法可以完成此操作而无需进行for循环。
我尝试使用地图,但无法正常工作。

map(str.__add__,(x for x in list))

请帮忙。


阅读 193

收藏
2021-01-20

共1个答案

一尘不染

这是压缩子列表并使用''.join生成的元组进行映射的一种方法:

list(map(''.join, zip(*lst)))
# ['a@1', 'b$2', 'c#3']

zip如docs所示,此处汇总了来自多个可迭代对象的元素。使用*,我们将列表解压缩到单独的可迭代对象中,这意味着该函数将改为接收zip(['a','b','c'],['@','$','#'],['1','2','3'])

现在,在每次迭代时,map它将应用于''.join每个聚合的可迭代对象,即,应用于每个子列表中的第一个元素,然后应用于第二个,依此类推。

2021-01-20