python列表循环中删除元素

遍历n个元素的列表,每次循环时删除当前元素,那么要多少次结束循环呢。

上一段代码:

arr = [0,1,2,3,4]
for x in arr:
    print('本次删除的元素:',x)
    arr.remove(x)
    print('当前列表内容: ',arr)
    print('########in loop ########')
print('----- out loop ------')
print(arr)

结果如下:

复制代码
本次删除的元素: 0
当前列表内容:  [1, 2, 3, 4]
########in loop ########
本次删除的元素: 2
当前列表内容:  [1, 3, 4]
########in loop ########
本次删除的元素: 4
当前列表内容:  [1, 3]
########in loop ########
----- out loop ------
[1, 3]
复制代码

 

当第一个下标为0的元素被删除后,后续元素依次补上来,原本下标为1的变为0。不过下一次循环对应的是下标为1的元素,这样新的下标为0的元素就被"跳"过了。
总结来说,对列表for循环时,并不是动态的根据列表实际元素挨个遍历的,而是按照列表初始的长度根据下标next下去的。

类似这样吧:

int c=len(list)
for(i=0; i<c; i++){
     list(i);
 }

另外,可能是因为字典和集合是无序的,不支持在循环的时候删除其中的元素:

RuntimeError: dictionary changed size during iteration
RuntimeError: Set changed size during iteration

 

posted @   refine1979  阅读(736)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示