社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何根据python中的另一个列表过滤列表中的列表元素?

Nirajan Raut • 5 年前 • 1505 次点击  

我有一个列表,其中包含一个作为元素的列表。现在,当列表元素包含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)]

我要删除子列表,即列表的元素 包含子列表中3个以上元素的 . 在这里 a[0] 由4个元素组成 b[0] 所以我想删除它。我不希望列表A中的任何子列表在 . 我很困惑,我该怎么办?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39042
 
1505 次点击  
文章 [ 1 ]  |  最新文章 5 年前
jpp
Reply   •   1 楼
jpp    6 年前

这是蛮力法。假设与您的数据一样,每个子列表中的项目都是唯一的,您可以使用 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)]