Python浅复制导致for loop删除剩下偶数位元素的问题

昨天群里,大家聊到了一个面试题,关于 浅复制 (shallow copy )的。 相信很多人都写过类似的错误代码。

通过一个for loop遍历删除列表中的元素(这里示例1到10)。最终执行的结果是

可以看到,每次循环,只有奇数位的数字被从列表移除了,偶数位的数字被保留下来。

这跟列表是一个链表结构有关系。

第二,这里的 tmp_items = items 是浅复制, tmp_items只是items的引用

迭代器在遍历列表的时候,从head开始

循环开始,首先删除第一个元素(1),此时,对应的head指针移动到指针2

继续遍历时, head->next 指向的是已经是元素3。    于是,最终只有奇数位置的元素被移除了。

Leave a Reply