python - 如何根据python中的另一个列表过滤列表中的列表元素?
问题描述
我有一个列表,其中包含一个列表作为元素。现在,当列表元素包含超过 3 个位于列表内另一个列表中的元素时,我想根据另一个列表过滤列表的元素。为了更多的理解,假设我有一个名为a
.
a = [(1, 5, 20, 22, 24, 25), (1, 5, 20, 22, 24, 29), (1, 5, 20, 22, 24, 31), (1, 5, 20, 22, 24, 36), (1, 5, 20, 22, 24, 41), (1, 5, 20, 22, 25, 29)]
现在我有另一个列表是b
。
b = [(5,20,24,25,29,36),(1,22,25,29,31,41)]
我想要的是我想删除子列表,即列表a
中包含超过 3 个元素的子列表元素b
。这里a[0]
包含 4 个元素,b[0]
所以我想删除它。我不希望列表 a 中的任何子列表在b
. 我很困惑,我该怎么办?
解决方案
这是蛮力方法。假设与您的数据一样,每个子列表中的项目都是唯一的,您可以使用set
列表推导:
a_sets = list(map(set, a))
b_sets = list(map(set, b))
res = [sublist for idx, sublist in enumerate(a) if not \
any(len(a_sets[idx] & b_set) > 3 for b_set in b_sets)]
[(1, 5, 20, 22, 24, 31), (1, 5, 20, 22, 24, 41)]
推荐阅读
- android - 修复旧 Android 版本的 PDFium 崩溃或包含自己的库
- php - Guzzle内存消耗优化
- c# - 转换列表
> 成一个字典 - r - 在 R 中获取日期
- c# - 图表 API 列表加入了 isArchived =false 的团队
- three.js - Three.js perspectivecamera 'near' 和 'far' 参数
- lua - Scrapy-Splash如何将返回变量添加到响应中
- sql-server - 如何在 Crystal Report 9 的 blob 字段中显示图像数据类型
- python - Python - 在我定义它们之前如何从其他类获取信息/使用函数?
- javascript - 为什么我得到一个错误,即找不到 app.js 文件?