You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除list1中的零元素及list2中对应索引的元素?

问题:同步移除两个列表中对应索引的元素

原始数据:

list1 = [0,10,20,0,40,50] 
list2 = [1,2,3,4,5,6] 

需求:移除list1中的所有0元素,同时移除list2中对应索引位置的元素,最终期望结果:

list1 = [10,20,40,50]
list2 = [2,3,5,6]

你的代码问题分析

你当前的代码逻辑完全偏离需求:

  1. 先把list1的非零元素存入list3,这一步没问题,但后续对list2的操作完全错误;
  2. for i in range(len(list3)): list2.append(i) 是往list2里添加0、1、2、3这些数值,和需求无关;
  3. list2.remove(i) 是移除list2中第一个等于i的元素,而不是对应索引的元素,比如list3里的10在list2中根本不存在,这步操作要么无效要么误删其他元素。

正确解法

方法1:遍历索引收集元素

最直观的方式,通过索引同时遍历两个列表,保留符合条件的元素:

new_list1 = []
new_list2 = []

for idx, num in enumerate(list1):
    if num != 0:
        new_list1.append(num)
        new_list2.append(list2[idx])

# 替换原列表
list1 = new_list1
list2 = new_list2

方法2:列表推导式+zip打包(更简洁)

用zip把两个列表的对应元素打包成元组,筛选出list1元素非零的元组,再拆分回两个列表:

# 筛选符合条件的元素对
filtered_pairs = [(x, y) for x, y in zip(list1, list2) if x != 0]

# 拆分回两个列表(如果筛选结果为空,要避免解包错误)
if filtered_pairs:
    list1, list2 = zip(*filtered_pairs)
    # 转成列表类型(zip返回元组)
    list1 = list(list1)
    list2 = list(list2)
else:
    list1 = []
    list2 = []

运行后就能得到你想要的结果。

内容的提问来源于stack exchange,提问作者Afroboy23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:16:04