python中remove函數(shù)的踩坑記錄
在python的使用過(guò)程中,難免會(huì)遇到要移除列表中對(duì)象的要求。這時(shí)可以使用remove函數(shù)。
對(duì)于python中的remove()函數(shù),官方文檔的解釋是:Remove first occurrence of value.大意也就是移除列表中等于指定值的第一個(gè)匹配的元素。
語(yǔ)法
list.remove()
參數(shù)
obj 參數(shù):從列表中刪除的對(duì)象的索引
返回值
刪除后不會(huì)返回值
常見(jiàn)用法:a = [1,2,3,4],a.remove(1),然后a就是[2,3,4];對(duì)于a = [1,1,1,2],其結(jié)果也是[1,1,2],這是最基本的用法。
但是對(duì)于下面這個(gè):
a = [1,2,3,4]for i in a: a.remove(i)# 結(jié)果a = [2,4]
或者說(shuō)
a = [1,1,1,1,1,2]for i in a: a.remove(1) #結(jié)果a = [1,1,2]
是不是跟想象中的不一樣,其主要原因如下(^表示當(dāng)前迭代器位于列表中的位置):
a = [ 1 , 2 , 3 , 4]
假設(shè)此時(shí) ^
默認(rèn)情況下只想第一個(gè)元素,然后執(zhí)行a.remove(1),然后下標(biāo)向后移動(dòng),列表因?yàn)閯h除了元素,后面的向前移動(dòng),如下:
a = [ 2 , 3 , 4]
此時(shí) ^
此時(shí)執(zhí)行a.remove(3),重復(fù)上面的移動(dòng)
a = [ 2 , 4]
此時(shí) ^
因?yàn)橐呀?jīng)到了列表的邊界,故結(jié)束遍歷,并返回`a = [2,4]`。
解決辦法:# 一下為解決辦法之一d = dict(zip(range(len(a)), a))[v for k, v in d.items() if v != value]總結(jié):
關(guān)于python列表的remove操作涉及了列表下標(biāo)的移動(dòng)以及列表中元素的移動(dòng),涉及了一些關(guān)于數(shù)組的知識(shí)。其核心問(wèn)題就是前面所說(shuō)的。
到此這篇關(guān)于python中remove函數(shù)的踩坑記錄的文章就介紹到這了,更多相關(guān)python中remove函數(shù)坑內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python爬蟲(chóng)beautifulsoup解析html方法2. Python 如何將integer轉(zhuǎn)化為羅馬數(shù)(3999以?xún)?nèi))3. python 實(shí)現(xiàn)aes256加密4. 詳解Python模塊化編程與裝飾器5. css進(jìn)階學(xué)習(xí) 選擇符6. Python性能測(cè)試工具Locust安裝及使用7. 以PHP代碼為實(shí)例詳解RabbitMQ消息隊(duì)列中間件的6種模式8. 使用Python解析Chrome瀏覽器書(shū)簽的示例9. html小技巧之td,div標(biāo)簽里內(nèi)容不換行10. python web框架的總結(jié)
