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

Python列表推导式:按等长布尔列表条件提取元素并移除原列表对应项

解决方法

首先给定初始数据:

a = [0.42, 0.18, 1.54, 2.9, 1.81, 2.35, 0.18, 1.54, 2.92]
mask = [False, True, False, False, False, False, True, False, False]

实现代码(全列表推导式实现)

仅需两行列表推导式即可同时满足两个需求,且不会出现遍历删除时的索引偏移问题:

# 需求1:提取mask为True对应元素到新列表
new_list = [val for val, flag in zip(a, mask) if flag]
# 需求2:过滤原数组,移除mask为True的元素
a = [val for val, flag in zip(a, mask) if not flag]

结果验证

  • 生成的new_list结果为 [0.18, 0.18]
  • 处理后的a结果为 [0.42, 1.54, 2.9, 1.81, 2.35, 1.54, 2.92]

额外说明

如果你需要修改原列表的内存对象(而非重新赋值变量),可以先收集待删除的索引再倒序弹出:

del_idx = [i for i, flag in enumerate(mask) if flag]
new_list = [a[i] for i in del_idx]
# 倒序弹出避免索引错位
for i in reversed(del_idx):
    a.pop(i)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:57:02