我有一个字符串列表如下
lst = [['a','b','c'],['@','$','#'],['1','2','3']]
我想明智地将list元素内的每个字符串连接起来,预期输出如下:
['a@1','b$2','c#3']
的大小lst可以变化。有没有任何方法可以完成此操作而无需进行for循环。 我尝试使用地图,但无法正常工作。
lst
map(str.__add__,(x for x in list))
请帮忙。
这是压缩子列表并使用''.join生成的元组进行映射的一种方法:
''.join
list(map(''.join, zip(*lst))) # ['a@1', 'b$2', 'c#3']
zip如docs所示,此处汇总了来自多个可迭代对象的元素。使用*,我们将列表解压缩到单独的可迭代对象中,这意味着该函数将改为接收zip(['a','b','c'],['@','$','#'],['1','2','3'])。
zip
*
zip(['a','b','c'],['@','$','#'],['1','2','3'])
现在,在每次迭代时,map它将应用于''.join每个聚合的可迭代对象,即,应用于每个子列表中的第一个元素,然后应用于第二个,依此类推。
map