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

Python中如何提取子列表对应False条件的元素?

提取列表中对应False标记的元素

我需要从列表J里提取对应cond1子列表中False位置的元素,以下是我的代码、当前输出和期望输出:

当前代码

J=[[1, 2, 4, 6, 7], [1, 4]]
cond1=[[[False, True, False, True, False]], [[False, True]]]

result = [value for value, condition in zip(J, cond1) if not condition]
print(result)

当前输出

[]

期望输出

[[1,4, 7],[1]]

问题分析与解决方案

你的代码存在两个核心问题:

  • cond1的结构比J多一层嵌套(每个元素是包含条件列表的子列表,比如[[False, True,...]]),直接zip后层级不匹配
  • 列表推导式逻辑错误,需要遍历子列表内部的元素与对应条件,而非直接判断整个condition对象

正确写法需要先解开cond1的嵌套,再逐个匹配元素和条件:

J=[[1, 2, 4, 6, 7], [1, 4]]
cond1=[[[False, True, False, True, False]], [[False, True]]]

result = [
    [num for num, cond in zip(sub_j, sub_cond[0]) if not cond]
    for sub_j, sub_cond in zip(J, cond1)
]
print(result)

运行后即可得到期望输出[[1,4,7],[1]]。

代码说明

  1. 外层推导式遍历J和cond1的每组子列表:sub_j对应J的子列表,sub_cond对应cond1的嵌套子列表
  2. 内层推导式遍历sub_j的元素num和sub_cond[0]的条件cond(取[0]是为了拿到cond1里实际的条件列表)
  3. 仅保留条件为False时对应的元素num

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:55:12