Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过反向(列表)循环是否会增加函数的时间复杂性?_Python_Python 3.x_Big O - Fatal编程技术网

Python 通过反向(列表)循环是否会增加函数的时间复杂性?

Python 通过反向(列表)循环是否会增加函数的时间复杂性?,python,python-3.x,big-o,Python,Python 3.x,Big O,简短但简单的问题。我一直在研究编码面试的时间复杂性,但我找不到一个简洁的答案。我知道这个问题是存在的 Python有两种循环列表的方法。您可以通过list.reverse()进行循环,它在时间复杂度为O(n)时反转列表,也可以通过reversed(list)进行循环。我的问题是:使用反向(列表)是否也会带来复杂性O(n) 我可以想象两种可能的答案,要么它实际上反转列表(在这种情况下,我会说:是的,它确实添加了O(n)),要么它只是从另一边循环列表(在这种情况下,我会说,不:它没有)。有人能给我一

简短但简单的问题。我一直在研究编码面试的时间复杂性,但我找不到一个简洁的答案。我知道这个问题是存在的

Python有两种循环列表的方法。您可以通过list.reverse()进行循环,它在时间复杂度为O(n)时反转列表,也可以通过reversed(list)进行循环。我的问题是:使用反向(列表)是否也会带来复杂性O(n)


我可以想象两种可能的答案,要么它实际上反转列表(在这种情况下,我会说:是的,它确实添加了O(n)),要么它只是从另一边循环列表(在这种情况下,我会说,不:它没有)。有人能给我一个明确的答案吗

与Python3中的许多其他函数一样,
reversed
内置函数返回迭代器,因此不需要额外的
n
迭代。在处理大O符号时,这无关紧要,但您对因子感兴趣,所以不

for i in reversed(my_list): 
只传递列表一次。这正是这些类型的辅助函数的要点

注意你本可以用

for i in my_list[::-1]:

这是一种常见的迭代方式,但是使用切片已经返回了一个列表-非常类似于
我的列表。反向
,一个额外的
n

迭代本身无论如何都将是O(n),所以你无法找到降低时间复杂性的方法是的,也许我问错了,但我主要对实际表现感兴趣。我已经了解到你通常不会说O(2n)。这通常只是O(n)那么:)谢谢,我已经怀疑了,但很高兴现在能确定。我将在5分钟内接受答案。