我想知道如果该元素包含另一个元素的子字符串,它们是否是从列表中删除元素的“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
有人可以提供一些见解吗?
谢谢。
输出:
['/var/html/site1/nested_web_root1', '/var/html/site1/nested_web_root2']