如何根据list_b中的0元素同步删除list_a与list_b对应索引元素
实现思路及代码示例
思路一:创建新列表(推荐方案)
这种方式不修改原列表,通过筛选符合条件的元素生成新列表,逻辑清晰且不易出错:
- 用
zip()函数同时遍历list_a和list_b的元素对 - 只保留
list_b中不为0的元素,以及list_a对应位置的元素 - 最后用新列表覆盖原列表
代码示例:
# 初始列表 list_a = ['2019', '2020', '2021', '2022', '2023'] list_b = [40, 0, 30, 0, 9] # 初始化新列表 new_list_a = [] new_list_b = [] # 筛选符合条件的元素 for a_item, b_item in zip(list_a, list_b): if b_item != 0: new_list_a.append(a_item) new_list_b.append(b_item) # 更新原列表 list_a, list_b = new_list_a, new_list_b
思路二:反向遍历原列表删除
如果需要直接修改原列表,要注意正向遍历删除会导致索引错位(删除元素后后续元素前移,容易漏删或误删),因此采用从后往前遍历索引的方式:
- 从
list_b的最后一个索引开始,倒序遍历到第一个索引 - 检查当前索引对应的
list_b元素是否为0,若是则删除list_a和list_b对应位置的元素 - 反向遍历不会影响未处理的前面元素的索引
代码示例:
list_a = ['2019', '2020', '2021', '2022', '2023'] list_b = [40, 0, 30, 0, 9] # 倒序遍历索引 for idx in range(len(list_b)-1, -1, -1): if list_b[idx] == 0: del list_a[idx] del list_b[idx]
内容的提问来源于stack exchange,提问作者Bruce Banner
相关产品推荐
相关产品推荐

