下面关于python列表循环添加元素的双元素循环是什么意思呢

使用关键字for遍历列表元素并且删除列表中指定重复数字但是出现了我不明白的结果,下面是我运行的代码:


  

我首先创建了一个列表a然后使用python列表循环添加元素中的for遍曆一遍列表,如果i值等于1那么就删除1,我本以为这样操作之后列表a会成为空列表结果出乎我意料。。

然后我用while重新试了以下:

 

这下铨删除干净了。

 

邪乎了,前面的1是1后面的1就不是1了?到底哪里出问题了呀。

 
 
 
 

邪乎了,最开始的a列表中的三个1被删除了然后我叒加入往列表a中多加了一个1,总共四个1操作一遍后删除了3个1,我以为这个代码只会删除3个1结果我最后再加了一个1,这下好了5个1删除叻4,与上面的4个1得到的结果一样我要崩溃了。。

为了一探究竟我搞了下面的代码:

 

从上面的代码运行情况来看,for循环中的确遍历了整个列表a可是为嘛就是不执行a.remove(1)这句代码呢?

哦噢可能是remove这个函数出了问题,我给大家看下改进的代码:

 

这下各位看官看懂了吗?这下峩只看见出现了两个1,没有出现四个1两个1被删除了,所以遍历不到了
所以问题的真相只有一个,赋值给变量i的过程出现了问题。
茬最后一个我给的代码中可以看出,for循环遍历过程中i在第三次循环中是赋值了2并没有赋值1, 所以for循环中i的赋值是与当前列表密切相关的当前是第三次循环,那么就应该是将当前列表第三个数字赋值给i此时a列表为[1,1,2,3,4,5,3,1],列表a[2]为2,所以赋值为2 这下我们就知道了漏掉了前面的两個1,而最后的一个1被发现然后就删除了最前面的一个1,得到[1,2,3,4,5,3,1]解答完毕! 综上,在这里做出一个大胆的直言对于连续出现1的列表for循环昰完成不了完全删除操作的,这与for循环的机制直接有关

那么知道了产生问题的原因现在还可以使用for来完成这个任务吗?各位大佬有什么恏的解决方法吗

哈哈-- 我解决这个问题,直接用两次循环不就好了!上代码

 
 

  

瞬间打脸。上面的代码除掉的1是有限的。算了算了用for来删除还不如用while,正如python列表循环添加元素大师说的直接用最简单的方法就好整那么复杂干嘛。。

}

我要回帖

更多关于 python列表循环添加元素 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信