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

跃然一笑
TA贡献1826条经验 获得超6个赞
你不应该同时迭代和删除,而是使用列表理解:
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
TA贡献1850条经验 获得超11个赞
你可以用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']
添加回答
举报
0/150
提交
取消