在哪里可以找到Python内置序列类型的时间和空间复杂度

发布于 2024-07-04 23:31:59 字数 70 浏览 10 评论 0 原文

我一直无法找到此信息的来源,无法亲自查看 Python 源代码来确定这些对象是如何工作的。 有谁知道我可以在网上找到这个吗?

I've been unable to find a source for this information, short of looking through the Python source code myself to determine how the objects work. Does anyone know where I could find this online?

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

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

发布评论

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

评论(3

赠我空喜 2024-07-11 23:31:59

查看 py dot org wiki 上的 TimeComplexity 页面。 它至少涵盖了集合/字典/列表/等,至少就时间复杂度而言。

Checkout the TimeComplexity page on the py dot org wiki. It covers set/dicts/lists/etc at least as far as time complexity goes.

百变从容 2024-07-11 23:31:59

Raymond D. Hettinger 做了精彩的演讲 (幻灯片)有关名为“核心 Python 容器 - 底层”的 Python 内置集合。 我看到的版本主要集中在 setdict 上,但也涵盖了 list

a 中还有一些来自 EuroPython 的相关幻灯片的照片博客

以下是我对 list 的注释摘要:

  • 将项目存储为指针数组。 下标花费 O(1) 时间。 附加成本摊销 O(1) 时间。 插入花费 O(n) 时间。
  • 通过过度分配来增长时尝试避免 memcpy。 许多小列表会浪费大量空间,但大列表不会因为过度分配而浪费超过 12.5% 的空间。
  • 一些操作预先调整大小。 给出的示例有 range(n)map()list()[None] * n、和切片。
  • 收缩时,仅当数组浪费了 50% 的空间时才进行重新分配。 pop 很便宜。

Raymond D. Hettinger does an excellent talk (slides) about Python's built-in collections called 'Core Python Containers - Under the Hood'. The version I saw focussed mainly on set and dict, but list was covered too.

There are also some photos of the pertinent slides from EuroPython in a blog.

Here is a summary of my notes on list:

  • Stores items as an array of pointers. Subscript costs O(1) time. Append costs amortized O(1) time. Insert costs O(n) time.
  • Tries to avoid memcpy when growing by over-allocating. Many small lists will waste a lot of space, but large lists never waste more than about 12.5% to overallocation.
  • Some operations pre-size. Examples given were range(n), map(), list(), [None] * n, and slicing.
  • When shrinking, the array is realloced only when it is wasting 50% of space. pop is cheap.
后来的我们 2024-07-11 23:31:59

如果您问我认为您问的问题,您可以找到它们这里...第 476 页及以后。

它是围绕 Python 的优化技术编写的; 这主要是时间效率的 Big-O 表示法,没有太多内存。

If your asking what I think your asking, you can find them Here... page 476 and on.

It's written around optimization techniques for Python; It's mostly Big-O notation of time efficiencies not much memory.

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