У меня 2 списка
list_links = ['google/order', 'google/faq', 'google/404']
prefixes = ['order', '404']
Мне нужно удалить все элементы из списка list_links, который содержит префиксы
результат должен быть
list_clean = ['google/faq']
Я пытаюсь сделать что-то подобное
for link in list_links:
for pre in prefixes:
if pre in link:
list_links.remove(link)
break
Но он пропускает некоторые элементы, я думаю, что это потому, что я не могу удалить элементы из списка, который я зацикливаю в тот момент, когда я набрал много примеров, но все это с числами и не работает для меня
Вы никогда не должны повторять и удалять одновременно, вместо этого используйте понимание списка:
list_links = ['google/order', 'google/faq', 'google/404']
prefixes = ['order', '404']
result = [e for e in list_links if not any(prefix in e for prefix in prefixes)]
print(result)
Вы можете использовать all
с endswith
:
list_links = ['google/order', 'google/faq', 'google/404']
prefixes = ['order', '404']
new_result = [i for i in list_links if all(not i.endswith(c) for c in prefixes)]
Выход:
['google/faq']
endswith
квалифицируется как «префикс»
prefixes
действительно являются суффиксами "google/"