计算机内存中存储的列表。这涉及到指向内存对象的指针。当你在一个逐个元素的循环中移除一个元素时,你会将指针移动到内存地址中下一个可用的元素。
你正在修改内存并遍历其中的内容。
元素的指针在列表中移动到下一个可用位置。
所以,在大小为5的情况下...输入代码在这里
[**0**,1,2,3,4]
remove 0 ---> [1,**2**,3,4] pointer moves to second index.
remove 2 ---> [1,3,**4**] pointer moves to 3rd index.
remove 4 ---> [1,3]
当我的学生使用pop(1)时,我正在向他们解释这个问题。这是另一个非常有趣的副作用错误。
x=[1,**2**,3,4,5]
for i in x:
x.pop(1)
print(x,i)
[1, **3**, 4, 5] 1 at index 0 it removed the index 1 (2)
[1, **4**, 5] 3 at index 1 it removed the index 1 (3)
[1, 5] 5 at index 2 it removed the index 1 (4)
哈哈。
他们说为什么这不工作……我的意思是……它确实做了你告诉它要做的事情。它又不是读心术。