Python中如何将两个二维列表按对应索引拼接得到预期结果
问题定位与正确实现
现有代码的问题点
- 原代码的实现逻辑是将
list_1、list_2的每一个子列表作为独立元素顺序追加到结果列表中,最终得到的是逐元素拼接的平铺结构(也就是你实际跑出的、两个列表子元素交替排列的效果),完全没有实现同索引位置子列表的内容融合,无法达到把5合并进第一个子列表、10合并进第二个、15合并进第三个的目标。 - 原代码中循环使用的变量
i未提前初始化,实际运行时会触发NameError报错,当前能跑出交替平铺的效果,大概率是手动补了i的初始值。
符合目标需求的实现逻辑
核心思路是按索引位置一一配对两个列表的子元素,将同位置的两个子列表做内容拼接后存入结果,而非把各子列表作为独立元素追加。
基础循环写法
list_1 = [[1,2,3,4], [6,7,8,9], [11,12,13,14]] list_2 = [[5], [10], [15]] answer = [] # 逐位置配对两个列表的子元素 for sub_list_1, sub_list_2 in zip(list_1, list_2): # 拼接两个同位置子列表的内容 merged_part = sub_list_1 + sub_list_2 answer.append(merged_part)
运行后得到的输出与目标完全一致:
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
简化写法(列表推导式)
answer = [sub1 + sub2 for sub1, sub2 in zip(list_1, list_2)]
内容的提问来源于stack exchange,提问作者Jithu Bijeesh Jb
相关产品推荐
相关产品推荐

