突然記起來一年前剛入行時,領導面試我時提的問題,刪除list中所有等於某個值的元素
比如 刪除 [1,2,3,4,1,2,3,4,1,3,4] 中所有的2元素
刪除元素常用 remove, pop 方法,
remove可以直接刪除某個值:
list.remove(1)
但是每次只能刪除第乙個,且如果list中不存在這個值則會丟擲異常。
pop可以根據索引來刪除:
list.pop(2)
但是同樣在此處不適用,因為 pop 都是直接作用於list物件,
當我們在遍歷list中,直接刪除會對遍歷有影響。
當時我給出的方案是建立乙個新list,遍歷原list,如果不等於這個值,則放入新list中。。。
所以落下乙個 雖然不會,但是敢想 的評價。。
當時事後回想,覺得應該是有兩種方案:
1.死迴圈無限remove,遇到異常則return
2.從後向前遍歷pop,遇到異常return
但是現在想起來,完全可以有更好的方法:
filter函式
def remove_item(n):
return n != 1
aaa = [1,2,3,5,6,8,9,5,3,1]
print list(filter(remove_item, aaa))
同樣,用於去除list中的空字串或者none同樣好用:
new_list = list(filter(none, list))
python 中 list 的 刪除等問題
python 中 list 的 不常見問題 1.list 問題 最近發現乙個list賦值給另乙個,並不像值操作那樣,其實是位址共享的,就是使用remove 函式後原先的值也會被刪掉。list 1,2,3,4,5 l list l.remove 1 print l,list 結果l 2,3,4,5 l...
python中List新增 刪除元素的幾種方法
一 python中list新增元素的幾種方法 2.extend 將乙個列表中每個元素分別新增到另乙個列表中,只接受乙個引數 extend 相當於是將list b 連線到list a上。list1 a b c lis2 list2.extend list1 0 list1 2 list1 a c 3....
Python中刪除list帶有某些特徵元素的方法
看了一些刪除list帶有某些特徵元素的帖子,大多都是用remove,pop,del來解決,其實可以換個思路來寫,就是找到你需要的元素,再給它們重新放入列表中。如下,想要刪除帶有description特徵的元素,保留其他所有元素。test list eth trunk20 description py...