Python中实现类似np.where()的列表筛选:根据Cond提取对应J元素
Python中实现类似np.where()的列表筛选方法
你需要提取布尔列表Cond中值为False时,对应嵌套列表J里的元素,以下是几种无需依赖numpy的等价实现方式:
示例输入
J = [[1,2,4,6,7]] Cond = [False, True, False, True, False]
预期输出
[1,4,7]
1. 列表推导式(推荐)
这是最简洁且Pythonic的写法,通过zip将元素与条件一一配对,筛选符合要求的项:
result = [j for j, cond in zip(J[0], Cond) if not cond] print(result)
2. 结合filter与lambda表达式
适合习惯函数式编程的场景,但注意如果J的子列表存在重复元素,index方法会返回第一个匹配项的位置,可能导致结果不准确:
result = list(filter(lambda x: not Cond[J[0].index(x)], J[0])) print(result)
3. 若允许使用numpy(原np.where方式)
如果可以依赖numpy库,直接用np.where配合布尔索引即可:
import numpy as np J_np = np.array(J) Cond_np = np.array(Cond) result = J_np[0][np.where(~Cond_np)].tolist() print(result)
内容的提问来源于stack exchange,提问作者jcbose123
相关产品推荐
相关产品推荐

