python中的remove趣谈
首先我们要知道remove做的操作是顺序遍历list表,找到第一个匹配的项时删掉该项,并不会再往下找,那我们看下面的代码
1
mylist = [1,2,3] for i in mylist: print i mylist.remove(i) print a
按照我们的思维这是遍历该表输出每一项后删除,所以输出应该是
1 2 3
但是实际输出并不是如此,而是这样
1 3
为何,我们可以先这样
mylist = [1,2,3] for i in mylist: print i mylist.remove(i) print mylist
>>1
>>[2, 3]
>>3
>>[2]
这样大致就可以有点明白了,for in 循环实际上是下标的遍历递增,那么当我们删掉第一个元素后,mylist的表就已经发生了变化,变成了[2,3]那么这样的话到第二次进入循环时,实际上已经到3了,所以2并没有被循环遍历到,也就导致并没有被删除