【发布时间】:2018-09-18 20:49:06
【问题描述】:
我正在尝试确定将 collections.deque 对象转换为 python 列表对象的复杂性是 O(n)。我想它必须获取每个元素并将其转换为列表,但我似乎无法找到双端队列背后的实现代码。那么 Python 是否在幕后内置了更高效的东西,可以允许 O(1) 转换为列表?
编辑:基于以下内容,我认为它不会比 O(n) 更快 “索引访问在两端是 O(1),但在中间慢到 O(n)。对于快速随机访问,请改用列表。”
如果它无法在 O(1) 时间内访问中间节点,那么它就无法在没有相同复杂度的情况下进行转换。
【问题讨论】:
-
你在哪里看到 O(1)?
-
docs.python.org/3.2/library/collections.html#deque-objects 在示例上方的底部附近,它解释了访问时间。 wiki.python.org/moin/TimeComplexity 解释一般操作的时间复杂性。
标签: python time-complexity big-o