Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 初始化列表的复杂性_Python - Fatal编程技术网

Python 初始化列表的复杂性

Python 初始化列表的复杂性,python,Python,我想初始化一个给定大小的空列表。我发现了以下内容:lst=[None]*n这段代码的复杂性是什么?它是常数还是线性的?如果它是线性的,那么什么是常量?在Python中创建大小为N的列表将始终是O(N)。如果您希望以固定时间创建列表,但长度可变,则需要编写自己的数据结构,该结构以“虚拟”方式实现。例如,假设一个类类似于列表,但有一个额外的成员“\u virtual\u len”,该成员由\u len\u()返回。然后在迭代时,这个特殊的类似列表的类可以迭代它包含的实际值,再加上一些“空”值以达到\

我想初始化一个给定大小的空列表。我发现了以下内容:
lst=[None]*n

这段代码的复杂性是什么?它是常数还是线性的?如果它是线性的,那么什么是常量?

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

谢谢!有没有标准的python数据结构具有这样的功能?哦,访问一个元素应该是O(n)而不是O(1),因为它需要在那一点上具体化列表。@JörgWMittag:我不这么认为:列表的“真实”部分将在O(1)中访问,就像普通的python
列表
和“虚拟”一样在O(1)中,只需返回“空”值即可访问该部分。不需要具体化虚拟部分。您如何知道真实和虚拟部分在哪里?您需要一个单独的列表来跟踪它,初始化该列表是O(n)。也许我是愚蠢的,但我不明白如何避免迭代(即O(n))或簿记(即O(n))。我可以想象的一些边界情况是1)真实部分在最后,虚拟部分在开始;2) 每个奇数元素都是实的,每个偶数元素都是虚的。