gpt4 book ai didi

python - 如果项目不包含字符串,则从列表中删除项目

转载 作者:行者123 更新时间:2023-11-28 21:51:02 25 4
gpt4 key购买 nike

我有一个 URL 列表,想删除所有不包含 imgur 或 youtube 的。

somelist = ['google.com', 'facebook.com', 'imgur.com/9utwj.gif', 'youtube.com/ofskdofk', 'yahoo.com']
approved = ['imgur','youtube']

for app in approved:
matching = [s for s in somelist if app in s]
for match in matching:
somelist.remove(match)
print somelist

返回

['google.com', 'facebook.com', 'yahoo.com']

所以从逻辑上讲,我觉得如果我把它改成 NOT in s....

matching = [s for s in somelist if app not in s]

它会删除所有不包含已批准 URL 的内容。但是,它不返回任何内容。

最佳答案

您可以使用 any查看 approved 中的任何字符串是否在某个列表的每个 url 中:

somelist = ['google.com', 'facebook.com', 'imgur.com/9utwj.gif', 'youtube.com/ofskdofk', 'yahoo.com']
approved = ['imgur','youtube']


somelist[:] = [url for url in somelist if any(sub in url for sub in approved)]

print(somelist)
['imgur.com/9utwj.gif', 'youtube.com/ofskdofk']

any 将在第一次匹配时短路,如果您的 url 有多个子字符串,它仍然只会添加 url 一次。

somelist[:] 只是意味着我们使用列表组合的效率更改原始列表/对象,而不是使用带有 list.remove 的常规 for 循环。

关于python - 如果项目不包含字符串,则从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com