如何提取嵌套参考列表中未包含输入列表元素的目标子列表
实现方案
你可以通过集合+列表推导式+all()内置函数快速实现需求,写法简洁且性能较好:
示例代码
# 你的原始数据 input_list = ["a", "b2","d"] ref_list = [['a'], ['b1', 'b2', 'b3'], ['c1', 'c2', 'c3', 'c4'], ['d']] # 先把输入列表转为集合,成员查询时间复杂度为O(1),数据量大时优势明显 input_set = set(input_list) # 核心筛选逻辑:保留所有元素都不在输入集合中的子列表 result = [sub for sub in ref_list if all(item not in input_set for item in sub)]
运行后result的值就是你预期的 [['c1', 'c2', 'c3', 'c4']]。
逻辑说明
- 提前转换
input_list为集合是优化项,如果你的数据量很小,直接用input_list查询也能运行,只是性能稍差 all()会判断子列表中所有元素都满足「不在输入集合」的条件,只要有一个元素在输入集合里,这个子列表就会被过滤掉- 如果你的场景中
ref_list可能存在空子列表,且不需要保留空子列表,可加一层判断调整为:result = [sub for sub in ref_list if sub and all(item not in input_set for item in sub)]
内容的提问来源于stack exchange,提问作者emp
相关产品推荐
相关产品推荐

