我有一个关于在python中迭代列表的问题。 让我们说我列出了A = [1,2,3,4]和B = []。使用这两个循环之间有什么区别(如果有的话)?我对时间的复杂性感兴趣。
for i in range(len(A)):
B.append(A[i])
for i in A:
B.append(i)
答案 0 :(得分:1)
这两个操作循环的时间复杂度相同。
以这种方式思考:
他们需要做多少次迭代?
他们都必须做> theList[[1]]
Var1 Var2 id
1 x a 1
>
个循环。因此,他们将花费相同的时间。
另一种可能的方式是len(A)
。这是Big-O-Notation
的示例,只是意味着时间复杂度为O(n)
- 即如果列表长度为linear
,则两个操作将花费相同的时间。如果列表的长度为5 --> 10
,那就好了。
-
在下面的grap中可以清楚地看到其他时间复杂性,这是在另一个答案中从这个伟大的explanation中偷来的:
答案 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)的时间复杂度。