Python中如何将两个列表对应位置的字符串拼接生成指定新列表
实现方式
直接用Python内置的zip()函数把两个列表同索引的元素配对,之后逐对做字符串拼接就能得到目标结果,可读性最高的写法是列表推导式:
list1 = ['a', 'b', 'c'] list2 = ['d', 'e', 'f'] result = [s1 + s2 for s1, s2 in zip(list1, list2)]
执行后result的值就是['ad', 'be', 'cf'],完全符合预期。
原理补充:
zip()遍历传入的可迭代对象时,会依次把每个对象同位置的元素打包成元组返回,针对本题的两个列表,它会依次返回('a', 'd')、('b', 'e')、('c', 'f'),遍历过程中直接把两个字符串相加拼接即可。
如果两个列表长度不一致,zip()会默认按更短的列表长度截断配对;如果需要保留长列表超出的元素,可以换成标准库itertools里的zip_longest(),超出的位置会自动填充你指定的默认值。
除此之外还有其他等效写法,比如用map配合lambda函数,但可读性比列表推导式差,日常开发优先选第一种方案即可:
result = list(map(lambda x, y: x + y, list1, list2))
内容的提问来源于stack exchange,提问作者Teriyaki
相关产品推荐
相关产品推荐

