如何在python中从列表中删除包含单词的项

2024-05-16 07:56:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

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

Tags: thehttpscomexampleembed单子azco
3条回答

您可以尝试迭代每个项目并使用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]

相关问题 更多 >