繁体   English   中英

如果该项目包含单词,如何从python列表中删除该项目

[英]how to remove an item from a list in python if that item contains a word

我有一个清单

a = ['https://example.co/embed/qACAB6TukkU/The.Ha-az.VOST.WEBRip.XviD-ZT.W.avi',
     'https://example.co/embed/l31lsZilT2E/The.Ha-az-ndmaids.FR.HDTV.XviD-ZT.W.avi',
     'https://example.com/embed/soslnnqnmccmplfa/The_Ha-az02_VOST_WEBRip_XviD-ZT_W_avi',
     'https://example.com/embed/pffpmptfpdfqddap/The_Ha-az-_Tale_S2_FRENCH_HDTV_XviD-ZT_W_avi']

我要删除该列表中链接中包含单词“ VOST”的每个项目。 这是我所知道的和我尝试过的:

a.remove('VOST')
print a

您可以尝试遍历每个项目并使用list comprehension推导对其进行过滤:

filtered = [i for i in a if 'VOST' not in i]

上面的代码与以下代码类似且更好:

filtered = []
for i in a:
    if 'VOST' not in i:
        filtered.append(i)

如果要使用remove ,可以遍历每个项目并检查要查找的单词是否在项目中,然后删除项目。 您可以尝试以下代码:

注意这将从原始列表中删除该项目,上一个答案将创建一个名为 filtered 新列表

for i in a:
    if 'VOST' in i:
        a.remove(i)

我是一个初学者,但我认为使用a.remove不起作用,因为从列表中删除一个项目会破坏以后项目的索引编制。 这是创建新列表并附加不包含“ VOST”的项目的更好解决方案。

如果您确实要删除项目那么以下方法可能适用于您:

for i in [i for i, v in enumerate(a) if 'VOST' in v][::-1]:
    del a[i]

或者,

for i in reversed([i for i, v in enumerate(a) if 'VOST' in v]):
    del a[i]

要么,

for i in reversed(range(len(a))):
    if 'VOST' in a[i]:
        del a[i]

怎么样

filter(lambda x: "VOST" not in x, a)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM