如何将Python列表1的第n个元素与列表2的第n个元素对应拼接
实现两个列表对应元素的指定拼接
需求说明
现有两个列表:
list1 = [1, 2, 3, 4] list2 = ["nest", "middle", "crow", "damage"]
需要将list2的元素在前,list1对应位置的数字在后拼接,得到新列表:["nest1","middle2","crow3","damage4"]
错误代码问题分析
之前使用的代码:
list3 = [f"{i}{j}" for i, j in enumerate(list2)]
问题在于enumerate(list2)返回的是(索引值, list2元素),而非list1的目标数字元素,所以最终拼接的是索引和字符串,不符合需求。
正确实现方法
方法一:使用zip()的列表推导式(推荐)
zip()可以将两个列表的对应元素配对,直接遍历配对后的元素完成拼接:
list1 = [1, 2, 3, 4] list2 = ["nest", "middle", "crow", "damage"] list3 = [f"{word}{num}" for word, num in zip(list2, list1)] print(list3)
输出结果:
["nest1","middle2","crow3","damage4"]
方法二:通过索引遍历
如果两个列表长度相同,也可以通过索引逐个访问元素拼接:
list1 = [1, 2, 3, 4] list2 = ["nest", "middle", "crow", "damage"] list3 = [] for idx in range(len(list1)): list3.append(f"{list2[idx]}{list1[idx]}") print(list3)
注意事项
- 确保两个列表长度一致,否则
zip()只会处理到较短列表的长度;如果需要处理长度不一致的场景,可以使用itertools.zip_longest()(需先导入itertools模块)。
内容的提问来源于stack exchange,提问作者AegeanSea_GFS
相关产品推荐
相关产品推荐

