Python“到位”功能

发布于 2024-10-22 03:38:53 字数 118 浏览 4 评论 0原文

Python 中的某些函数“就地”运行(例如 [].sort[].reverse),而另一些函数(例如 [])的具体原因是什么。追加 不?

What's the particular reason that some functions in Python operate "IN PLACE", like [].sort and [].reverse, while some others like [].append not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南巷近海 2024-10-29 03:38:53

根据我的《Python 编程》第四版:

默认情况下,pop 相当于
获取最后一个,然后删除
偏移量为−1 处的项目。带着争论,
pop 删除并返回该项目
该偏移量—list.pop(-1) 是相同的
如list.pop()。对于就地更改
诸如追加、插入、删除等操作,
并弹出,没有创建新列表
内存,所以执行速度很快
(性能可能进一步取决于
哪一端是“顶部”,但这在
转取决于Python的当前列表
实施以及测量
我们稍后将探讨的概念)。

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

According to my Programming Python 4th edition:

By default, pop is equivalent to
fetching, and then deleting, the last
item at offset −1. With an argument,
pop deletes and returns the item at
that offset—list.pop(-1) is the same
as list.pop(). For in-place change
operations like append, insert, del,
and pop, no new list is created in
memory, so execution is quick
(performance may further de- pend upon
which end is the “top,” but this in
turn depends on Python’s current list
implementation, as well as measurement
concepts we’ll explore later).

There is actually a whole section devoted to this, but this pretty much answers your question.

空袭的梦i 2024-10-29 03:38:53

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

"in-place" refers to a sorting algorithms use of only the memory needed to store the list of items plus some small constant. Append isn't a sorting algorithm and thus "in-place" is not meaningful, or at least wouldn't mean the same thing. You're confusing "in-place" in sorting and whether or not it returns a reference to a new object or a modified version of the same object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文