为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕神8447489 2021-09-23 09:13:01
我有 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)


查看完整回答
反对 回复 2021-09-23
?
慕盖茨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']


查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信