У меня есть список со многими словами (100. 000+), и я хотел бы удалить все подстроки каждого слова в списке.
Поэтому для простоты предположим, что у меня есть следующий список:
words = ['Hello', 'Hell', 'Apple', 'Banana', 'Ban', 'Peter', 'P', 'e']
Требуется следующий вывод:
['Hello', 'Apple', 'Banana', 'Peter']
-
'Hell'был удален, потому что это подстрока'Hello' -
'Ban'был удален, потому что это подстрока'Banana' -
'P'был удален, потому что это подстрока'Peter' -
'e'был удален, потому что это подстрока'Hello','Hell','Apple'и т.д.
Что я сделал
Это мой код, но мне интересно, есть ли более эффективный способ, чем эти вложенные методы.
to_remove = [x for x in words for y in words if x != y and x in y]
output = [x for x in words if x not in to_remove]
Как я могу улучшить производительность? Должен ли я использовать regex?