首页 > 其他 > 详细

记另一道有意思的面试题

时间:2018-07-24 19:00:32      阅读:148      评论:0      收藏:0      [点我收藏+]

b=[2,4,5,6]

for i in b:

    if not i%2:

        b.remove(i)

这道题的答案为[4,5],这题也是看起来很容易看见答案很容易犯迷糊的题,不就是去掉列表中的所有偶数吗,为啥4还存在呢,以下是我的个人见解,如果有误欢迎纠正,当for循环遍历到2时按照程序流程列表中会将2给删除,此时的列表结构发生了改变变为了[4,5,6],当再次循环时for循环中记录已经遍历过列表中的第一个元素所以从第二个元素开始遍历,但是此时列表中的第二个元素变为了5,也就将列表第一个元素4给漏掉了,也就是说4虽然是偶数但是他并没有被遍历到所以最后成功的存活了下来,我自己又做了一个小实验,我觉得更印证了我的推测,而且for循环本质就是利用生成器yeild实现的,yeild可以记录遍历的位置不过条件如果发生改变记录的位置会不会相应的改变,通过这个例子大概是不会的了技术分享图片

记另一道有意思的面试题

原文:https://www.cnblogs.com/akuma233/p/9361644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!