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

时间:2008-09-05 04:27:47

标签: python performance complexity-theory big-o sequences

我一直无法找到这些信息的来源,除了自己查看Python源代码以确定对象的工作方式。有谁知道我在哪里可以找到这个?

3 个答案:

答案 0 :(得分:18)

查看py dot org wiki上的TimeComplexity页面。至少就时间复杂度而言,它涵盖了set / dicts / lists /等。

答案 1 :(得分:14)

Raymond D. Hettinger关于Python的内置集合an excellent talkslides)做了“核心Python容器 - 引擎盖下”。我看到的版本主要集中在setdict,但list也被覆盖了。

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

以下是关于list的说明摘要:

  • 将项目存储为指针数组。下标花费O(1)时间。追加成本摊销O(1)时间。插入成本O(n)时间。
  • 尝试通过过度分配来避免memcpy。许多小清单会浪费大量空间,但大型清单的浪费不会超过12.5%。
  • 某些操作预先调整大小。给出的示例包括range(n)map()list()[None] * n和切片。
  • 缩小时,只有在浪费50%的空间时才会realloc编辑数组。 pop很便宜。

答案 2 :(得分:2)

如果您问我的想法,您可以找到它们Here ...第476页及以后。

它是围绕Python的优化技术编写的;它主要是Big-O表示时间效率不高的记忆。