qq275055984 发表于 2020-8-13 10:59:35

这个打印出来为什么不是1,2,3,而是13

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

=============== RESTART: C:/Users/Administrator/Desktop/练习题/31.py ==============
1
3
>>>

zltzlt 发表于 2020-8-13 11:00:48

Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:

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

qq275055984 发表于 2020-8-13 11:05:34

zltzlt 发表于 2020-8-13 11:00
Python 边遍历列表边删除元素会引发 Bug,所以需要先拷贝一份列表:

哦谢谢

yhhpf 发表于 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,既打印了1,然后1被删除,下次循环时打印mum而因为1被删除了,所以mum变成了3

是这个逻辑么???

zltzlt 发表于 2020-8-13 11:16:33

yhhpf 发表于 2020-8-13 11:14
大佬,这算是BUG么???我怎么感觉像是正常逻辑?




嗯对,就是这样

yhhpf 发表于 2020-8-13 11:18:31

zltzlt 发表于 2020-8-13 11:16
嗯对,就是这样

哦哦,get到了~{:10_298:}
页: [1]
查看完整版本: 这个打印出来为什么不是1,2,3,而是13