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并没有被循环遍历到,也就导致并没有被删除

posted @ 2016-04-06 14:49  928pjy  阅读(211)  评论(0编辑  收藏  举报