电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

關于python中remove的一些坑小結

瀏覽:97日期:2022-06-30 14:53:17

前幾天,使用python時遇到這么一個需求,刪除一個列表中值為1的元素。我尋思著使用remove方法,但是remove方法只會刪除第一個,于是我使用for循環去刪除。代碼和運行結果如下:

關于python中remove的一些坑小結

當時這個結果讓我很懵逼,為什么1沒有被刪除完?查了資料發現,是for循環搗的鬼。因為for循環實際是循環的列表下標(索引),同時由于列表的可變性,每一次刪除一個元素,列表的長度就會發生變化,元素的索引也會發生變化。這里來具體分析一下這段代碼:

第一次循環,循環索引為0,此時索引為0的元素是1,滿足條件,因此mylist中的第一個1被刪除,此時mylist變為[1,2,1,1,3,4];

第二次循環,循環索引為1,此時新列表中,索引為1的元素是2,不滿足條件,mylist仍然為[1,2,1,1,3,4];

第三次循環,循環索引為2,此時列表中,索引為2的元素是1,滿足條件,remove方法會再次刪除一個1,但是remove會刪除第一次出現的1(即刪除索引為0的那個1),因此列表變為[2,1,1,3,4];

第四次循環,循環索引為3,新列表中,索引為3的元素是3,不滿足條件,mylist仍然為[2,1,1,3,4];

第五次循環,循環索引為4,此時列表中,索引為4的元素是4,不滿足條件,mylist仍然為[2,1,1,3,4];

此時,由于新列表長度為5,于是循環結束。

下面的截圖結果能夠很直觀的看出來。

關于python中remove的一些坑小結

至此,如果是這樣的一段代碼,結果應該是怎樣?

關于python中remove的一些坑小結

最終mylist=[’b’,’d’],怎么樣,和你計算的值是否一樣?

回到最初的需求,要怎樣才能刪除所有的1,這里可以使用deepcopy來復制一份,之后一個列表用于循環,一個用于移除值。代碼和結果如下:

關于python中remove的一些坑小結

這樣就可以實現刪除列表中的所有值為1的元素。這里可能有人會問,為什么不直接將l1賦值給一個變量,即l2=l1,這里涉及到引用和深淺復制的問題,因此不在此處解答

附:Python列表的remove方法的注意事項

關于python中remove的一些坑小結

為何沒有刪除列表中的全部元素?

解釋:

按照執行順序,第一個空格被刪除之后,后面的元素會前移(變成[’空格’,’空格’,’12’,’23’]),指針下一次會指向新列表的第二個元素(即初始狀態的第三個空格),從而初始狀態的第二個空格被跳過了,初始第三個空格被刪除,接著后面的元素又再次前移(變成[’空格’,’12’,’23’]),指針指向新列表的第三個元素,即初始狀態的第5個元素23,然后23被刪除了,因此只剩下[’空格’,’12’]

如果想排除初始列表中的部分元素,如何實現?

由上面的情況知道,在遍歷列表的同時對列表執行刪除操作,會造成意外的結果,那么對初始列表進行遍歷,對初始的列表的副本執行刪除操作呢?

關于python中remove的一些坑小結

以上結果顯示,沒有得到預期效果。為什么?

問題出在copy=ls這一句,這里僅僅是使得copy與ls指向了同一片內存(即淺拷貝,shallow copy),并沒有執行【開辟一片新內存,并且ls內存中的內容復制到新內存,然后使copy指向新開辟的內存,即深拷貝,deep copy】這一系列操作。因此對copy執行的remove操作,和對遍歷ls列表,實質上還是都是針對同一片內存進行操作,因此結果上一個例子類似。

若想解決這一問題,有3個辦法法:

(1)

ls=[’ ’,’ ’,’ ’,’12’,’23’,’abc’,’aa’]copy=[’ ’,’ ’,’ ’,’12’,’23’,’abc’,’aa’]

這一辦法對于已知列表的所有元素,且元素數量較少,結構較簡單時可行,其他情況下不可行。

(2)引入copy模塊的deepcopy方法:

關于python中remove的一些坑小結

(3)另外準備一個空列表,遍歷初始列表時,將符合條件的元素逐一加入到空列表當中(利用列表的append方法)。

這種方法,思路上與remove方法相反,但執行的操作差不多,時間復雜度也與remove方法差不多,無需引入copy模塊。

另外,對于列表的remove方法,python基礎教程第二版給出的說明是:

remove方法用于移除列表中某個值的第一個匹配項:

>>>x=[’to’,’be’,’or’,’not’,’to’,’be’]>>>x.remove(’be’)>>>x[’to’,’or’,’not’,’to’,’be’]

到此這篇關于python中remove的一些坑小結的文章就介紹到這了,更多相關python中remove的坑內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 上海佳武自动化科技有限公司| 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 |