python中修改列表的问题
有时候需要对python列表中的元素进行修改,单个元素的修改就不再介绍了。通过遍历整个列表进行修改元素值。但此时有一个问题。
如下图代码
但是,这样利用for循环去修改列表中元素的值,看起来没有什么问题。其实结果并没有相应的改变。原因是num的index以及不是原来的id,看下面的截图:
那么应该如何修改列表中的元素的值呢?
这两种方法类似。就是拿到索引值,直接通过索引值,再修改里面的元素值,就可以了。
为什么在python中不建议在for循环中修改列表?在下面的连接中有详细介绍。
https://www.zhihu.com/question/49098374
根据上述参考,在遍历列表时,如果要删除元素时也要小心,如下图代码:
结果却是:
在需要删除元素时,可以先将列表复制一份,即把原有list复制一下,遍历拷贝的list,但是修改原有的list。此方法当列表较大时,拷贝后会比较占用内存。
下面链接提示了几个遍历list删除元素的方法
http://www.cnblogs.com/bananaplan/p/remove-listitem-while-iterating.html
for循环中,遍历list删除元素,删除后,list的实际长度变小了,但是循环次数并没有减少,依然是按照原来list的长度进行遍历,所以会造成索引溢出的报错。
总结:队列操作,特别是for循环,要格外注意,删除数据的时候,一定不要对着列表直接操作。同时注意列表元素索引的变化。