Python 函数,如果子字符串已存在,则从列表中删除字符串

问题描述 投票:0回答:1

我想知道如果该元素包含另一个元素的子字符串,它们是否是从列表中删除元素的“Pythonic”方式。

例如,假设我们有一个这样的列表:

["/var/html/site1", "/var/html/site1/nested_web_root1", "/var/html/site1/nested_web_root2"]

/var/html/site1
包含在以下两者中:
/var/html/site1/nested_web_root1
/var/html/site1/nested_web_root2
因此,我希望将它们从列表中删除。

我已经编写了一个函数来执行此操作,并且它“大部分”工作,但代码非常糟糕且过于复杂。也有一些边缘情况会失败。 这是我到目前为止所写的内容:

def substringSieve(string_list): string_list.sort(key=lambda s: len(s), reverse=False) out = [] bad_list = [] for outer_string in string_list: for inner_string in string_list: if outer_string != inner_string: if outer_string in inner_string: out.append(outer_string) bad_list.append(inner_string) if outer_string not in out and outer_string not in bad_list: out.append(outer_string) return out

有人可以提供一些见解吗?

谢谢。

python list nested substring
1个回答
0
投票
输出:

['/var/html/site1/nested_web_root1', '/var/html/site1/nested_web_root2']

当我评论我的代码时,我不确定是否需要解释更多

© www.soinside.com 2019 - 2024. All rights reserved.