[英]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.