python 从列表 1 中删除元素,如果它包含来自列表 2 的前缀

我有 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

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


慕神8447489
浏览 243回答 2
2回答

跃然一笑

你不应该同时迭代和删除,而是使用列表理解: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)

慕盖茨4494581

你可以用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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python