Py学习  »  Python

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

Nirajan Raut • 4 年前 • 768 次点击  

我有一个列表,其中包含一个作为元素的列表。现在,当列表元素包含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
 
768 次点击  
文章 [ 1 ]  |  最新文章 4 年前
jpp
Reply   •   1 楼
jpp    5 年前

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