鱼C论坛

 找回密码
 立即注册
查看: 1164|回复: 5

[已解决]这个打印出来为什么不是1,2,3,而是13

[复制链接]
发表于 2020-8-13 10:59:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mum = ['1','2','3']
for names in mum:
    mum.remove(names)
    print(names)

=============== RESTART: C:/Users/Administrator/Desktop/练习题/31.py ==============
1
3
>>>
最佳答案
2020-8-13 11:00:48
Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:
mum = ['1','2','3']
for names in mum[:]:
    mum.remove(names)
    print(names)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-13 11:00:48 | 显示全部楼层    本楼为最佳答案   
Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:
mum = ['1','2','3']
for names in mum[:]:
    mum.remove(names)
    print(names)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-13 11:05:34 | 显示全部楼层
zltzlt 发表于 2020-8-13 11:00
Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:

哦  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 11:14:49 | 显示全部楼层
zltzlt 发表于 2020-8-13 11:00
Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:

大佬,这算是BUG么???我怎么感觉像是正常逻辑?
mum = ['1','2','3']
for names in mum:
    print(names)
    mum.remove('1')
比如我把代码改成这样(会报错,不管报错),输出的也是1和3,没有2.
应该是for循环遍历元素时是通过下标遍历的吧?既第一次循环时打印mum[0],既打印了1,然后1被删除,下次循环时打印mum[1]而因为1被删除了,所以mum[1]变成了3

是这个逻辑么???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 11:16:33 | 显示全部楼层
yhhpf 发表于 2020-8-13 11:14
大佬,这算是BUG么???我怎么感觉像是正常逻辑?

嗯对,就是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 11:18:31 | 显示全部楼层
zltzlt 发表于 2020-8-13 11:16
嗯对,就是这样

哦哦,get到了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 11:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表