Python3计算/内存标准类型/数据结构的复杂性(列表,字典,元组等)

时间:2012-05-23 22:14:51

标签: performance python-3.x complexity-theory

Python3默认数据结构(list,dict,tuple ......等)的计算复杂度是多少?

(内存复杂性问题也很有趣。)

我发现了什么:http://wiki.python.org/moin/TimeComplexity - 我担心这是关于python 2的,不是吗?

2 个答案:

答案 0 :(得分:2)

wiki条目适用于Python 2和3的CPython。这些类没有被更改。其他实现可能有所不同,但如果他们希望人们将代码从CPython移植到xpython,它们必须是相似的。例如,使用列表类型的链接列表的Python需要一个相当不同的编程方法和代码重新排列才能正常工作; - )。

在3.3中,更改了dict类,以便共享一个类的多个实例的_ dict _s共有的一些信息,而不是重复。这主要影响具有100或1000个某类实例的人,并且将节省大约1/3的dict空间(我认为),这是一个不会改变空间复杂度等级的常数因素。

更重要的是,(unicode)str类已被完全重写,只能使用所需的字节数/字符数。结果通常会减少空间和时间,但主要影响应该是O(xxx)表示法忽略的乘数。

答案 1 :(得分:1)

计算复杂性与解决方法有关。独立地,如果Python 3更快或更快,复杂性将是相同的 - 除非使用原则上不同的算法解决问题。

有时候,具有相同名称的抽象数据结构可能会有所不同(比如Python 2字符串与Python 3字符串,或者int,在Python 2中长,在Python 3中与广义int相比)。

我没有检查它,但我的猜测是Python 2和Python 3在这个意义上没有区别。