У меня есть список со многими словами (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
?