python 如果元素包含列表 2 的前缀,则从列表 1 中删除该元素

python delete element from list 1 if it contains prefix from list 2

我有 2 个列表

list_links = ['google/order', 'google/faq', 'google/404']
prefixes = ['order', '404']

我需要删除 list_links 中包含 prefixes

的所有元素

结果必须是

list_clean = ['google/faq']

我正在尝试做这样的事情

for link in list_links:
    for pre in prefixes:
        if pre in link:
            list_links.remove(link)
            break

但是它跳过了一些元素,我认为这是因为我无法从我正在循环的列表中删除元素 我在谷歌上搜索了很多例子,但都是数字,对我没用

您可以将 allendswith 一起使用:

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']

你不应该同时迭代和删除,而是使用 list comprehension:

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)