簡體   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