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