以num_list = [1, 2, 2, 3, 4, 5]
為例。
刪除一個(gè)可以確定的元素,一共有三種方法此衅。
-
num_list.remove(2)
,會(huì)刪除第一個(gè)值為2的元素亭螟。 -
num_list.pop(1)
挡鞍,會(huì)彈出索引為1的元素,若不傳參數(shù)预烙,則彈出最后一個(gè)元素墨微。 -
del num_list[1]
,會(huì)刪除索引為1的元素扁掸。 - 還可以使用切片來(lái)達(dá)到目的翘县,屬于重新構(gòu)造一個(gè)新的列表。
刪除一個(gè)符合條件的元素谴分。
for i, item in enumerate(num_list):
if item == 2:
num_list.pop(i)
else:
print(item)
結(jié)果是:
1
3
4
5
再查看下num_list炼蹦,發(fā)現(xiàn)是[1,2,3,4,5]
,值為2的元素只刪除了第一個(gè)狸剃。
原因是當(dāng)刪除第一個(gè)值為2的元素時(shí)掐隐,列表往前移動(dòng)一位,導(dǎo)致第二個(gè)2直接被跳過(guò)了钞馁。
解決辦法是反向虑省,這樣可以避免出現(xiàn)此問(wèn)題。
for i in range(len(num_list) - 1, -1, -1):
if num_list[i] == 2:
num_list.pop(i)
else:
print(num_list[i])
結(jié)果是:
5
4
3
1
另外僧凰,還有方法可達(dá)成目的探颈,但是會(huì)增加內(nèi)存使用。
[item for item in num_list if item != 2]
或
def f():
for item in num_list:
if item != 2:
yield item
list(f())