for循环一个列表,每次pop都会删除最后一个值,形成新的列表,但是pop删了几次就失效了。a=['a','b','c','d',1,2,3,4,5,6]foriina:a.pop()print(a,'--')以下是结果:/usr/local/bin/python3.7/code/pop2.py['a','b','c','d',1,2,3,4,5]--['a','b','c','d',1,2,3,4]--['a','b','c','d',1,2,3]--['a','b','c','d',1,2]--['a','b','c','d',1]--Processfinishedwithexitcode0想问下为什么到['a','b','c','d',1]--就停止了不继续执行pop了。
2 回答
烙印99
TA贡献1829条经验 获得超13个赞
python3.7theforstatementNote:Thereisasubtletywhenthesequenceisbeingmodifiedbytheloop(thiscanonlyoccurformutablesequences,e.g.lists).Aninternalcounterisusedtokeeptrackofwhichitemisusednext,andthisisincrementedoneachiteration.Whenthiscounterhasreachedthelengthofthesequencetheloopterminates.......for...in...内部维护了一个下标,当下标达到list长度之后循环就结束了。你现在在循环内部删元素,list长度越来越小,当删掉一半的时候,下标就超过list长度了。
三国纷争
TA贡献1804条经验 获得超7个赞
问题出现在,你在循环内部删除元素,当i为1时,刚好把2删除。此时i已经到a尾部了,所以下次就退出了。如果想遍历完,应该是foriinrange(len(a)):a.pop()
添加回答
举报
0/150
提交
取消