Python中的某些函数运行“IN PLACE”的特殊原因是什么,例如[].sort
和[].reverse
,而其他一些函数如[].append
则没有?
答案 0 :(得分:3)
根据我的编程Python第4版:
默认情况下,pop等效于 获取,然后删除,最后一个 偏移-1处的项目。有了一个论点, pop删除并返回该项目 offset-list.pop(-1)是一样的 作为list.pop()。进行就地变更 append,insert,del等操作 并弹出,没有创建新列表 记忆,所以执行很快 (表现可能会进一步下降 哪个结束是“顶部”,但这个在 转向取决于Python的当前列表 实施,以及测量 我们稍后会探讨的概念。
实际上有一整节专门讨论这个问题,但这几乎可以回答你的问题。
答案 1 :(得分:2)
“就地”是指排序算法仅使用存储项目列表所需的内存加上一些小常量。追加不是排序算法,因此“就地”没有意义,或者至少不会意味着相同的事情。你在排序中“就地”混淆了它是否会返回对新对象或同一对象的修改版本的引用。