在哪里可以找到Python内置序列类型的时间和空间复杂度
我一直无法找到此信息的来源,无法亲自查看 Python 源代码来确定这些对象是如何工作的。 有谁知道我可以在网上找到这个吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我一直无法找到此信息的来源,无法亲自查看 Python 源代码来确定这些对象是如何工作的。 有谁知道我可以在网上找到这个吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
查看 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.
Raymond D. Hettinger 做了精彩的演讲 (幻灯片)有关名为“核心 Python 容器 - 底层”的 Python 内置集合。 我看到的版本主要集中在
set
和dict
上,但也涵盖了list
。a 中还有一些来自 EuroPython 的相关幻灯片的照片博客。
以下是我对
list
的注释摘要:memcpy
。 许多小列表会浪费大量空间,但大列表不会因为过度分配而浪费超过 12.5% 的空间。range(n)
、map()
、list()
、[None] * n
、和切片。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
anddict
, butlist
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
: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.range(n)
,map()
,list()
,[None] * n
, and slicing.realloc
ed only when it is wasting 50% of space.pop
is cheap.如果您问我认为您问的问题,您可以找到它们这里...第 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.