|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
近日在写Python代码的时候,发现列表删除元素的时候,有一个问题,具体如下:
- list1 = [1, 2, 2, 2, 5, 2]
- for a in list1 :
- if a == 2 :
- list1.remove(2)
- print(list1)
复制代码
按理来说,想也想的到,得到的结果是 [1, 5]
但是最后的结果却是 [1, 5, 2]
网上查了下,说是因为列表的长度改变了,所以每次找到的索引都会发生改变,但是如果列表是 [1, 2, 3, 2, 5, 2],仅是修改中间一个元素,得到的结果就是 [1, 3, 5],这里列表的长度也发生了改变,但是结果却与预期一致,求各位大神详细讲解下具体原因,谢谢。
本帖最后由 heidern0612 于 2018-12-13 15:23 编辑
你不加分片复制的话,for循环还在循环,但是你元素越来越少,再次for循环遍历的时候就会出现索引错误或者像你上面那种错误现象。
加分片复制我遍历的是分片复制,分片复制怎么遍历都无所谓,因为我移除的不是分片,而是本体,两者不干扰。
|
|