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

Python中移除列表A指定元素并同步删除列表B对应元素

同步过滤列表A及对应位置的列表B

问题描述

需要移除列表A中小于阈值tol的元素,同时移除列表B中与A被移除元素同一位置的元素。例如A中[[2.22105075e-18]]被移除时,B中对应的[[4,13]]也需移除。

当前代码问题

原代码生成CB的逻辑完全错误:

CB=[x for x,y in enumerate(CA) if list(y) in B]

这段代码枚举过滤后的CA的索引与元素,再判断CA的元素是否存在于B中,完全没关联原A和B的位置对应关系,因此输出空列表。

正确实现方式

方法一:同时遍历A和B的对应元素

直接配对遍历A和B的元素,仅保留A元素符合条件时对应的B元素:

import numpy as np
A= [[9.16435586e-05], [0.000184193464], [9.28353239e-05], [2.22105075e-18]]
B= [[13, 14], [4, 5], [5, 14], [4, 13]]
tol=1e-12

CB = [b for a, b in zip(A, B) if a[0] > tol]
print(CB)

方法二:通过索引过滤

先筛选出A中符合条件的元素索引,再根据索引提取B中对应位置的元素:

import numpy as np
A= [[9.16435586e-05], [0.000184193464], [9.28353239e-05], [2.22105075e-18]]
B= [[13, 14], [4, 5], [5, 14], [4, 13]]
tol=1e-12

# 获取A中符合条件的元素索引
valid_indices = [i for i, a in enumerate(A) if a[0] > tol]
# 根据索引提取B的对应元素
CB = [B[i] for i in valid_indices]
print(CB)

输出结果

两种方法均会得到期望输出:

[[13, 14], [4, 5], [5, 14]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:02:28