Функция Python для удаления строк из списка, если подстрока уже существуетPython

Программы на Python
Ответить
Anonymous
 Функция Python для удаления строк из списка, если подстрока уже существует

Сообщение Anonymous »

Мне интересно, являются ли они «питоническим» способом удаления элементов из списка, если этот элемент содержит подстроку другого элемента.
Например, скажем, у нас есть такой список:

Код: Выделить всё

["/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
Может ли кто-нибудь поделиться информацией?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ady-exists
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»