zoukankan      html  css  js  c++  java
  • python:在for遍历list时使用remove出现的问题以及解析(转)

    原文地址: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]

    画图如下所示: 

    或者程序打印看一下:

     

  • 相关阅读:
    洛谷 P3366 【模板】最小生成树
    libfreenect
    openni2 和opencv读取数据
    kinect数据读取
    kinect for windows sdk
    caffe android lib
    Hlsl2glsl
    手势识别半自动标注结果视频
    CLM
    10位算法大师
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/7462106.html
Copyright © 2011-2022 走看看