首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从包含其他列表中的子字符串的列表中移除元素

Python从包含其他列表中的子字符串的列表中移除元素
EN

Stack Overflow用户
提问于 2020-12-16 23:34:16
回答 2查看 43关注 0票数 0

我有两个列表,并且我想删除列表l1上具有l2中没有提到的任何不同子字符串的元素。我的列表如下:

代码语言:javascript
复制
l1 = ['PC||macOS||Xbox One||PlayStation 4||Nintendo Switch',
 'macOS||PC||Xbox One',
 'iOS',
 'PC||PlayStation 4',
 'PC',
 'Web',
 'PC||macOS',
 'PC||macOS||Linux',
 'PC||Linux',
 'PC||Web',
 'PC||Xbox One||PlayStation 4||Nintendo Switch',
 'PC||macOS||Linux||Web',
 'macOS||PC||Linux||PlayStation 4||Xbox One',
 'PC||Android',
 'PC||macOS||Linux||Android',
 'macOS||iOS||Linux||PC||PlayStation 4',
 'Linux',
 'PC||macOS||Web',
 nan,
 'Xbox One||PC||Nintendo Switch||PlayStation 4',
 'iOS||PC||macOS||Linux',
 'PC||macOS||Android||Web',
 'iOS||Linux||PC||macOS',
 'Android',
 'macOS||PC||Linux',
 'Linux||PC'
]

l2 = ['PC', 'macOS', 'Linux', 'mac', 'Web']

我想要获得的是在l1中的所有组合,它们只有在l2中声明的子字符串。因此,在新的列表中,我不会有任何像“PlayStation4”、"iOS“或"Xbox One”这样的元素。类似于:

代码语言:javascript
复制
l3 = [
 'PC',
 'Web',
 'PC||macOS',
 'PC||macOS||Linux',
 'PC||Linux',
 'PC||Web',
 'PC||macOS||Linux||Web',
 'PC||macOS||Linux||Android',
 'Linux',
 'PC||macOS||Web',
 'macOS||PC||Linux',
 'Linux||PC'
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-16 23:36:04

l2成为一个用于快速查找的集合,然后使用带有生成器理解的all

代码语言:javascript
复制
l2_set = set(l2)
l3 = [x for x in l1 if all(chunk in l2_set for chunk in x.split("||"))]
票数 3
EN

Stack Overflow用户

发布于 2020-12-16 23:36:55

使用集合非常简单。

代码语言:javascript
复制
l3 = [v for v in l1 if set(v.split('||')) <= set(l2)]

不过我还是得把那个不靠谱的南过滤掉。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65326372

复制
相关文章

相似问题

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