首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取同一列表中字符串子集

如何获取同一列表中字符串子集
EN

Stack Overflow用户
提问于 2019-10-14 14:53:57
回答 2查看 136关注 0票数 0

我有一个清单

代码语言:javascript
运行
复制
a = ['find old', 'find old mails', 'finding', 'find your pc', 'find your pc s ip', 'find your pc s ip address']

我想从列表中删除子集字符串,结果如下所示

代码语言:javascript
运行
复制
['find old mails', 'finding', 'find your pc s ip address'] 

测试代码

代码语言:javascript
运行
复制
a = ['find old', 'find old mails', 'finding', 'find your pc', 'find your pc s ip', 'find your pc s ip address']
b = len(a)
def is_sub(sub, lst):
    ln = len(sub)
    return any(lst[i: i + ln] == sub for i in range(len(sub) - ln + 1))

# print(is_sub(a[0],a[2]))
for i in range(b-1):
    for j in range(i+1,b):
        if is_sub(a[i],a[j]):
            index = a.index(a[i])
            a.remove(a[index])
            break
    b = len(a)

print(a)

我得到的输出结果是

代码语言:javascript
运行
复制
['find old mails', 'finding', 'find your pc s ip', 'find your pc s ip address']

和预期输出

代码语言:javascript
运行
复制
['find old mails', 'finding', 'find your pc s ip address']
EN

Stack Overflow用户

回答已采纳

发布于 2019-10-14 15:05:08

通过对您的子字符串检查函数进行一些更改(特别是使用in来检查子字符串)并使用列表理解,您可以获得期望的结果:

代码语言:javascript
运行
复制
def is_sub(item, lst):
    """Check whether an item is a substring of other items in a list."""
    return any([item in i for i in [i for i in lst if i != item]])

output = [i for i in a if not is_sub(i, a)]
代码语言:javascript
运行
复制
['find old mails', 'finding', 'find your pc s ip address']
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58371468

复制
相关文章

相似问题

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