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
但是它跳过了一些元素,我认为这是因为我无法从我正在循环的列表中删除元素
我在谷歌上搜索了很多例子,但都是数字,对我没用
您可以将 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']
你不应该同时迭代和删除,而是使用 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)
我有 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
但是它跳过了一些元素,我认为这是因为我无法从我正在循环的列表中删除元素 我在谷歌上搜索了很多例子,但都是数字,对我没用
您可以将 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']
你不应该同时迭代和删除,而是使用 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)