pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在迭代列表時(shí)從列表中刪除

Removing from a list while iterating over it(在迭代列表時(shí)從列表中刪除)
本文介紹了在迭代列表時(shí)從列表中刪除的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

以下代碼:

a = list(range(10))
remove = False
for b in a:
    if remove:
        a.remove(b)
    remove = not remove
print(a)

使用 Python 時(shí)輸出 [0, 2, 3, 5, 6, 8, 9],而不是 [0, 2, 4, 6, 8]3.2.

Outputs [0, 2, 3, 5, 6, 8, 9], instead of [0, 2, 4, 6, 8] when using Python 3.2.

  1. 為什么會(huì)輸出這些特定的值?
  2. 為什么沒(méi)有錯(cuò)誤提示底層迭代器正在被修改?
  3. 在這種行為方面,與早期版本的 Python 相比,機(jī)制是否發(fā)生了變化?

請(qǐng)注意,我并不是要解決這種行為,而是要理解它.

Note that I am not looking to work around the behaviour, but to understand it.

推薦答案

我爭(zhēng)論了一段時(shí)間來(lái)回答這個(gè)問(wèn)題,因?yàn)轭愃频膯?wèn)題在這里已經(jīng)被問(wèn)過(guò)很多次了.但它的獨(dú)特性足以讓人們從懷疑中受益.(不過(guò),如果其他人投票結(jié)束,我不會(huì)反對(duì).)這是對(duì)正在發(fā)生的事情的直觀解釋.

I debated answering this for a while, because similar questions have been asked many times here. But it's just unique enough to be given the benefit of the doubt. (Still, I won't object if others vote to close.) Here's a visual explanation of what is happening.

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]       <-  b = 0; remove? no
 ^
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]       <-  b = 1; remove? yes
    ^
[0, 2, 3, 4, 5, 6, 7, 8, 9]          <-  b = 3; remove? no
       ^
[0, 2, 3, 4, 5, 6, 7, 8, 9]          <-  b = 4; remove? yes
          ^
[0, 2, 3, 5, 6, 7, 8, 9]             <-  b = 6; remove? no
             ^
[0, 2, 3, 5, 6, 7, 8, 9]             <-  b = 7; remove? yes
                ^
[0, 2, 3, 5, 6, 8, 9]                <-  b = 9; remove? no
                   ^

由于沒(méi)有其他人有,我將嘗試回答您的其他問(wèn)題:

Since no one else has, I'll attempt to answer your other questions:

為什么沒(méi)有給出錯(cuò)誤指示底層迭代器正在被修改?

Why is no error given to indicate that underlying iterator is being modified?

要在不禁止許多完全有效的循環(huán)構(gòu)造的情況下拋出錯(cuò)誤,Python 必須很多了解正在發(fā)生的事情,并且它可能必須在運(yùn)行時(shí)獲取該信息.所有這些信息都需要時(shí)間來(lái)處理.它會(huì)讓 Python 慢很多,只是在速度真正重要的地方——一個(gè)循環(huán).

To throw an error without prohibiting many perfectly valid loop constructions, Python would have to know a lot about what's going on, and it would probably have to get that information at runtime. All that information would take time to process. It would make Python a lot slower, in just the place where speed really counts -- a loop.

在這種行為方面,與早期版本的 Python 相比,機(jī)制是否發(fā)生了變化?

Have the mechanics changed from earlier versions of Python with respect to this behaviour?

簡(jiǎn)而言之,沒(méi)有.或者至少我高度對(duì)此表示懷疑,而且自從我學(xué)習(xí) Python (2.4) 以來(lái)它的表現(xiàn)肯定是這樣的.坦率地說(shuō),我希望可變序列的任何直接實(shí)現(xiàn)都以這種方式運(yùn)行.哪位知道的好,請(qǐng)指正.(實(shí)際上,快速文檔查找確認(rèn) 從 version 1.4!)

In short, no. Or at least I highly doubt it, and certainly it has behaved this way since I learned Python (2.4). Frankly I would expect any straightforward implementation of a mutable sequence to behave in just this way. Anyone who knows better, please correct me. (Actually, a quick doc lookup confirms that the text that Mikola cited has been in the tutorial since version 1.4!)

這篇關(guān)于在迭代列表時(shí)從列表中刪除的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區(qū)域周圍繪制一個(gè)矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測(cè)和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個(gè)矩形邊界框中應(yīng)用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據(jù)文本方向檢測(cè)圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測(cè)圖像中矩形的中心和角度)
主站蜘蛛池模板: 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 间甲酚,间甲酚厂家-山东祥东新材料 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 杭州|上海贴标机-百科 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 方源木业官网-四川木门-全国木门专业品牌 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 锂离子电池厂家-山东中信迪生电源 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 |