python中迭代的时间复杂度

时间:2017-12-02 20:22:42

标签: python iterator time-complexity

我有一个关于在python中迭代列表的问题。 让我们说我列出了A = [1,2,3,4]和B = []。使用这两个循环之间有什么区别(如果有的话)?我对时间的复杂性感兴趣。

for i in range(len(A)):
    B.append(A[i])

for i in A:
    B.append(i)

3 个答案:

答案 0 :(得分:1)

这两个操作循环的时间复杂度相同

以这种方式思考:

  

他们需要做多少次迭代?

他们都必须做> theList[[1]] Var1 Var2 id 1 x a 1 > 个循环。因此,他们将花费相同的时间。

另一种可能的方式是len(A)。这是Big-O-Notation的示例,只是意味着时间复杂度为O(n) - 即如果列表长度为linear,则两个操作将花费相同的时间。如果列表的长度为5 --> 10,那就好了。

-

在下面的grap中可以清楚地看到其他时间复杂性,这是在另一个答案中从这个伟大的explanation中偷来的:

graph

答案 1 :(得分:0)

每个循环都是O(n),或线性时间:

for i in range(len(A)):
    B.append(A[i])

for i in A:
    B.append(i)

每个append操作都是O(1),而B.append(A[i])处的索引也是O(1)。因此,此代码块的总体时间复杂度为:

T(N) = O(n) + O(n) = 2*O(n) => O(n)

因为Big-O衡量最坏的情况。

答案 2 :(得分:0)

根据this问题/答案,len(A)的时间复杂度为O(1),因此它不会增加您提到的第一个循环的复杂性。两种可能性都必须进行n次循环,其中n是A的长度。 总而言之,两种可能性都具有O(n)的时间复杂度。