做网咖的网站,代理ip平台,有哪些网络营销方式,杭州seo网站排名优化问题发生背景#xff1a;在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True)#xff0c;然后实例化了大批对象#xff0c;具体你可参考打飞机游戏或者坦克大战发射子弹#xff0c;每个子弹一个实例#xff0c;创建的多到一定时候肯定是要释…问题发生背景在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True)然后实例化了大批对象具体你可参考打飞机游戏或者坦克大战发射子弹每个子弹一个实例创建的多到一定时候肯定是要释放的然后我选择了在循环操作时候销毁了对象结果发现很诡异的是对象总会跳过一部分没法销毁出问题思路代码#简单拿列表举例具体代码暂不粘贴list_a [11,22,33,44,55,66,77,88,99]for num in list_a:#此处有其它操作使用num,此处拿print代替print(num)if num 33 or num 44:list_a.remove(num)#猜测一下运行结果很多人是不是觉得print()哪里可以调用到列表中所有数据#还有remove会回收列表中33和44成员那你就太年轻了请看结果意识到两个bug了没循环后调用怎么没掉(虽然只是print操作代替的你可以想象列表里存的如果是存钱或者投资的队列是不是很惊喜)然后不是remove回收了吗为啥44还躺在哪里是不是很想象的结果不一样具体分析1、列表是有序的在使用remove方法时候判断到索引2刚好等于33然后代码让我删除于是代码就删除了此时执行完成列表是【11,22, ,44,55,66,77,88,99】;2、索引位2不能是空吧因为你没有append操作呀原索引位3就填充了索引位2位置没意见吧然后此时循环指针在索引位2要进入索引位3操作是不是但是请看执行索引位3循环时候列表是【1122445566778899】3、于是第一个bug产生print时候44哪去了已经在索引位2了呀循环说索引位2我已经操作过了管他谁呢我要操作索引位3了此时索引位3是55于是print调用结果肯定就是1122335566778899 ——44顺利的被忽略了吧4、于是这就不难解释第二个bug了因为你现在是第三索引位循环判断取得值都是55你让我判断是不是等于33或者等于44我做了没肯定是做了索引位3是55(此时索引位2才是44而且索引位2刚才已经判断过了凭啥让我做两次上边for循环都没搞我才不干呢)此时顺利的保留了44在列表中最终列表结果是【1122445566778899】最终给你了此时拿到操作后数据是不是很郁闷解决思路推荐1、定义新的列表不要在循环中对同一个列表中数据删除操作2、判断符合条件列表的数据添加到列表3、循环要删除元素列表删除其它列表数据具体如下至此问题顺利解决只是一种思路推荐哈有好的方法欢迎留言共同探讨如有错误欢迎大佬指出非常感谢