当前位置: 首页 > 面试题库 >

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

严狐若
2023-03-14
问题内容

我正在写一个看起来像这样的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)

对于额外的信用,剪接或任意弹出。


问题答案:

在python
Wiki上
有一个非常详细的表格,可以回答您的问题。

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

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


 类似资料:
  • 问题内容: 我已经看到了此页面 https://wiki.python.org/moin/TimeComplexity, 但是我没有看到列表中的函数。什么是时间的时间复杂度的? 我对时间的实验表明,它适用于较大的尺寸。有人可以确认吗? timeit反转大小列表的时间 问题答案: 是的,您是对的,它是O(n),其中n- 列表长度。在此处查找更多信息:https : //www.ics.uci.edu

  • 比方说MD5或SHA-1?这两者的时间复杂度是多少?我试图在网上找到它,但它非常有限,我得到的只是它们都是O(n)。有人能进一步启发我吗?也许给我一个最坏的情况和最好的情况?

  • 有人能告诉我函数的复杂性是什么吗?为什么?谢谢 我认为复杂性是:“O(nlog n)”

  • 好的,第一个for循环显然是。第一个迭代是,第二个迭代是。我想是不是就像那个次数?这意味着。我说对了吗? 编辑:(不是复制品)我知道大O是什么。我在一个具体的案例中询问了正确的评估。

  • 问题内容: 我注意到python官方网站上set操作的时间复杂度表。但是我只想问一下将列表转换为集合的时间复杂度是多少, 我有点知道这实际上是一个哈希表,但是它到底是如何工作的呢?那是O(n)吗? 问题答案: 是。遍历一个列表is并将每个元素添加到哈希集is ,因此总操作为。

  • Leetcode问题https://leetcode.com/problems/count-binary-substrings/ 该解决方案有效,但我很难提出递归解决方案的时间复杂度。 每当循环遇到s.charAt(i)!=s.charAt(i 1)时,它都会进行递归调用以展开,直到达到基本大小写或其他部分。 因为我遍历整个字符串,所以for循环是O(n)。但是如何确定将进行的递归调用的数量,因为