大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!
For循环大家都知道日常的基本使用:
image.png
看上图给人的错觉是for .. in ..这种方式取值是根据list中的具体值进行直接取值的
可是真的是这样的吗?
看下面的一个例子
image.png
我们会发现一个很奇怪的现象,让lista 遍历删除i后,发现lista只打印了部分,并且lista中还剩下部分数据未删除
如果按照最开始的取值的思路,那么应该remove的操作应该是针对所有的值
通过这种对比可以知道,for..in..实际的取值也是根据索引来进行取值,拿第二个图为例:
为什么是打印1,3,5?
index = 0 ******************* index=1 ***************** index=2
[1,2,3,4,5,6] > remove(1)> [2,3,4,5,6] >remove(3)> [2,4,5,6] >remove(5)> [2,4,6]
此时【2,4,6】内部最大索引只有2,所以程序无法在继续执行
最后的结果就是打印了1,3,5, 留下来2,4,6
网友评论