小白,请教各位大佬!python for 循环列表并且pop,为什么不走完?跪求!

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了。
阿波罗的战车
浏览 446回答 2
2回答

烙印99

python3.7theforstatementNote:Thereisasubtletywhenthesequenceisbeingmodifiedbytheloop(thiscanonlyoccurformutablesequences,e.g.lists).Aninternalcounterisusedtokeeptrackofwhichitemisusednext,andthisisincrementedoneachiteration.Whenthiscounterhasreachedthelengthofthesequencetheloopterminates.......for...in...内部维护了一个下标,当下标达到list长度之后循环就结束了。你现在在循环内部删元素,list长度越来越小,当删掉一半的时候,下标就超过list长度了。

三国纷争

问题出现在,你在循环内部删除元素,当i为1时,刚好把2删除。此时i已经到a尾部了,所以下次就退出了。如果想遍历完,应该是foriinrange(len(a)):a.pop()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript