5

Python 中的某些函数运行“就地”的具体原因是什么,比如[].sortand [].reverse,而另一些函数[].append则不喜欢?

4

2 回答 2

6

根据我的编程 Python 第 4 版:

默认情况下,pop 相当于获取,然后删除偏移量 -1 处的最后一项。使用参数,pop 删除并返回该偏移量的项目—list.pop(-1) 与 list.pop() 相同。对于追加、插入、删除和弹出等就地更改操作,不会在内存中创建新列表,因此执行速度很快(性能可能进一步取决于哪一端是“顶部”,但这又取决于Python 当前的列表实现,以及我们稍后将探讨的度量概念)。

实际上有一整节专门讨论这个问题,但这几乎回答了你的问题。

于 2011-03-15T21:05:54.580 回答
1

就地”是指一种排序算法,仅使用存储项目列表所需的内存加上一些小常数。Append 不是排序算法,因此“就地”没有意义,或者至少不会意味着同样的事情。您在排序中“就地”混淆了它是否返回对新对象的引用或同一对象的修改版本。

于 2011-03-15T21:02:03.123 回答