您的位置:首页 > 编程语言 > Python开发

python:在for遍历list时使用remove出现的问题以及解析(转)

2017-09-01 10:48 585 查看
原文地址:http://blog.csdn.net/circle2015/article/details/64444300
最近面试时,面试官在纸上写了几行代码,说是很简单的问题,我看后直接懵逼。。。如下:


a=[1,2,3,4,5]
for i in a:
a.remove(i)
print a


问我打印出的a结果是啥,好吧,的确是我学艺不精,回答了a=[],当时尴尬的要死,回来后敲了一遍,结果让我直接懵逼,结果如下下:



后来网上查了查,原来几年前就有人进行过解析,但是我还是按照自己的走一遍吧,参考链接如下
http://blog.sina.com.cn/s/blog_678b56660102w6tp.html

1、remove解释

remove方法用于移除列表中某个值的第一个匹配项:

>>>x=['to','be','or','not','to','be']
>>>x.remove('be')
>>>x
['to','or','not','to','be']


2、最开始的那个结果解释:

按照平常理解,应该删除所有内容,可偏偏没有,因为具体过程如下:

1、当第一次删除后,后面的元素会前移,此时a=[2,3,4,5],
2、然后指针下一次会指向新列表的第二个元素(即初始状态的第三个位置),从而初始状态的第二个位置被跳过了,初始第三个位置被删除,接着后面的元素又再次前移(变成[2,4,5])
3、指针指向新列表的第三个元素,即初始状态的第5个元素5,然后5被删除了,因此只剩下[2,4]

画图如下所示:



或者程序打印看一下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐