Python for in 问题
生活随笔
收集整理的这篇文章主要介绍了
Python for in 问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
前几天学习群中有朋友问了一个奇怪的问题:
l = [1, 2, 3, 4, 5, 6] for v in l:del l[0] print(l) # [4, 5, 6]l = [1, 2, 3, 4, 5, 6] for v in l[:]:del l[0] print(l) # [] 复制代码刚看到也是觉得奇怪,平时很少会在for in 遍历时删除列表元素,第二中写法和第一种写法上只是l和l[:]不同,为什么结果会那么奇怪? 先把影响结果的因素放在这里:
好了,下面一点一点看一下为什么会产生以上问题:
for in 实现的while实现:
l = [1, 2, 3, 4, 5, 6] for i in l:print(i)# 等价写法: i = 0 iter_l = iter(l) while True:try:print(next(iter_l))except StopIteration as e:print('迭代结束')break 复制代码迭代列表流程图
当执行next方法时,返回当前元素,并移动到后一个元素位置,当当前位置无效时执行next方法就报错,结束循环那如果在遍历列表时同时删除元素,会如下图
所以到会保留最后一半元素转载于:https://juejin.im/post/5aaf987a5188255565345121
总结
以上是生活随笔为你收集整理的Python for in 问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: SpringCloud采坑之Feign服
- 下一篇: Django~1