python的循环中数组remove问题

503611908 发布于 2021-04-10 544 次阅读


问题

在循环中删除数组元素时,会出现如下问题

[img]https://vkceyugu.cdn.bspapp.com/VKCEYUGU-df9040b6-66ef-461b-92a5-f74c4e71766f/7ef3b013-a1d1-416d-8ed9-c98f9bf0284d.png[/img]
当运行时会发现出现数组下标溢出问题。这是由于列表的可变性,每一次删除一个元素,列表的长度就会发生变化,元素的索引也会发生变化。


解决办法

利用deepcopy来复制一个数组出来,对该数组比对,原数组删除

[img]https://vkceyugu.cdn.bspapp.com/VKCEYUGU-df9040b6-66ef-461b-92a5-f74c4e71766f/2729a819-1879-4b5b-851a-edea589d3f9c.png[/img]
至于为什么不用b = a来复制,因为涉及到引用和深浅复制的问题,因此不细说