首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查一个子集是否包含在列表中?

如何检查一个子集是否包含在列表中?
EN

Stack Overflow用户
提问于 2019-11-09 15:46:19
回答 2查看 80关注 0票数 0

我有以下清单:

代码语言:javascript
复制
l =
[
 ['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
 ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
 ['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]

我想删除不符合以下约束的所有列表:列表必须包括['s5','s6','s8']['s15', 's23']

代码语言:javascript
复制
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']

预期结果是:

代码语言:javascript
复制
[
 ['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
 ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']
]

我怎样才能做到呢?

我尝试使用set(l1).issubset(t)set(l2).issubset(l),但是set只返回唯一的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-09 15:59:13

您可以使用filterset检查条件。

使用filter,您也可以维护订单。

代码语言:javascript
复制
>>> list(filter(lambda x : not(set(l1+l2)-set(x)), l))
>>> [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'], 
     ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]
票数 1
EN

Stack Overflow用户

发布于 2019-11-09 15:57:57

我想你可以做一次会员检查:

代码语言:javascript
复制
l = [
 ['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
 ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
 ['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']

l1_s = ''.join(l1)
l2_s = ''.join(l2)

print([x for x in l if l1_s in ''.join(x) and l2_s in ''.join(x)])

# [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
#  ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58780850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档