记另一道有意思的面试题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值