如何将Python两个不同列表的对应元素拼接为新列表的单个元素
Python列表按位置拼接问题解决方案
错误原因
- 外层
for x,y in zip(list1,list2):未实际生效,内层列表推导式的双重for循环会对两个列表做笛卡尔积遍历,生成所有元素两两组合的拼接结果,因此得到9个元素的列表 - 外层循环每次执行都会重新计算并覆盖
listFinal的值,最终输出的是最后一次循环执行后的笛卡尔积结果
正确实现代码
方案1:zip+列表推导式(最简写法)
直接基于zip配对同位置元素,一次遍历完成拼接:
listFinal = [x + ' ' + y for x, y in zip(list1, list2)]
方案2:索引遍历写法
如果需要同时获取索引位置,可以用下标遍历实现:
listFinal = [] # 需保证list1和list2长度一致 for i in range(len(list1)): listFinal.append(f"{list1[i]} {list2[i]}")
注:如果两个列表长度不一致,zip方法会自动以较短的列表长度为准停止配对
内容的提问来源于stack exchange,提问作者Baobab1988
相关产品推荐
相关产品推荐

