python - python列表函数的运行时复杂度是多少?

标签 python complexity-theory

我正在编写一个看起来像这样的python函数

def foo(some_list):
   for i in range(0, len(some_list)):
       bar(some_list[i], i)

所以它被调用了

x = [0, 1, 2, 3, ... ]
foo(x)

我曾假设列表的索引访问是 O(1),但惊讶地发现对于大型列表,这比我预期的要慢得多。

那么,我的问题是python列表是如何实现的,下面的运行时复杂度是多少

  • 索引:list[x]
  • 从末尾弹出:list.pop()
  • 从头弹出:list.pop(0)
  • 扩展列表:list.append(x)

为了额外的信用,拼接或任意弹出。

最佳答案

a very detailed table on python wiki这回答了你的问题。

但是,在您的特定示例中,您应该使用 enumerate 来获取循环内可迭代的索引。像这样:

for i, item in enumerate(some_seq):
    bar(item, i)

关于python - python列表函数的运行时复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1005590/

相关文章:

algorithm - 修改后的 MergeSort 的复杂性

time-complexity - 斐波那契数列的计算复杂度

algorithm - 具有集合大小约束(P 或 NP)的最大覆盖问题的问题复杂度

python - 如何为不同的QWebEnginePage实例设置不同的代理?

Python Dash 刷新页面不更新源数据

适合初学者的 Python 框架

complexity-theory - Big O Notation,我们什么时候可以合法地删除常量?

algorithm - 算法的复杂度是多少 : T (n) = 3 * T (n ÷ b) + n² + 1?

python - BeautifulSoup 在 HTML 中找不到元素类

python - 保留 PCA 中的特定组件