Python中如何将嵌套列表所有子列表的第三个元素替换为指定列表对应值
嵌套列表批量替换子列表指定位置元素的实现
按照示例规则,需逐次配对外层列表的子列表、替换值列表的对应位置,将每个子列表的第三个元素(对应Python索引2)替换为lst2的同位置值,最终生成新列表。
基础循环实现(无语法门槛)
通过索引关联两个列表的位置,修改子列表副本避免污染原始数据:
lst1 = [['a','b','c', 3],['d','e','f', 9],['g','h','i', 'j']] lst2 = [2, 3, 4] lst_new = [] for idx in range(len(lst1)): sub_copy = lst1[idx].copy() sub_copy[2] = lst2[idx] lst_new.append(sub_copy)
注意:如果直接修改lst1内的子列表对象,会永久改动原始输入数据,后续其他逻辑用到lst1时会出现意料之外的变动,因此这里用copy方法生成子列表副本再做修改。
列表推导式实现(代码精简)
通过zip同步配对子列表与替换值,通过切片拼接生成新的子列表,无需手动维护索引:
lst_new = [sub[:2] + [replace_val] + sub[3:] for sub, replace_val in zip(lst1, lst2)]
逻辑说明:
zip(lst1, lst2)自动按顺序匹配每一个子列表和对应的替换值- 切片逻辑保留子列表前两个元素(索引0、1),插入替换值,再保留子列表从索引3开始的所有后续元素,完全匹配示例输出结构
小提示:
zip会按最短的输入列表截断配对,如果lst1和lst2长度不一致,需要提前做长度校验避免遗漏数据。
结果验证
执行任意实现逻辑后,lst_new的输出与预期完全一致:
[['a', 'b', 2, 3], ['d', 'e', 3, 9], ['g', 'h', 4, 'j']]
内容的提问来源于stack exchange,提问作者user15332110
相关产品推荐
相关产品推荐

