我想初始化一个给定大小的空列表。我在SO上发现了以下内容:lst = [None] * n
这段代码的复杂性是什么?它是恒定的还是线性的?如果它是线性的,那么常数方法是什么?
答案 0 :(得分:3)
在Python中创建大小为N的list
将始终为O(N)。如果要在恒定时间内创建列表但具有可变长度,则需要编写自己的数据结构,以“虚拟”方式执行。例如,假设一个类似于list
但具有__len__()
返回的额外成员“_virtual_len”的类。然后在迭代时,这个特殊的类似列表的类可以迭代它包含的实际值,加上一些“空”值来达到_virtual_len
。构建这样的列表将是O(1)。