初始化列表的复杂性

时间:2018-05-06 09:57:04

标签: python

我想初始化一个给定大小的空列表。我在SO上发现了以下内容:lst = [None] * n这段代码的复杂性是什么?它是恒定的还是线性的?如果它是线性的,那么常数方法是什么?

1 个答案:

答案 0 :(得分:3)

在Python中创建大小为N的list将始终为O(N)。如果要在恒定时间内创建列表但具有可变长度,则需要编写自己的数据结构,以“虚拟”方式执行。例如,假设一个类似于list但具有__len__()返回的额外成员“_virtual_len”的类。然后在迭代时,这个特殊的类似列表的类可以迭代它包含的实际值,加上一些“空”值来达到_virtual_len。构建这样的列表将是O(1)。