循环遍历反转(列表)是否会增加函数的时间复杂性?

2024-06-16 12:49:32 发布

您现在位置:Python中文网/ 问答频道 /正文

简短而简单的问题。我一直在研究编码面试的时间复杂性,我找不到一个简洁的答案。我知道这个问题是存在的。What is the time complexity of Python List Reverse?。你知道吗

Python有两种方法循环遍历列表。你可以通过列表.反转()在时间复杂度为O(n)时将列表反转到位,或者可以在反转列表中循环。我的问题是:使用reversed(list)是否也会带来复杂性O(n)?你知道吗

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


Tags: ofthe答案编码列表timeis时间
1条回答
网友
1楼 · 发布于 2024-06-16 12:49:32

与python3中的许多其他函数一样,reversed内置函数返回一个迭代器,因此不需要额外的n迭代。在处理big-O表示法时,这无关紧要,但你对因子感兴趣,所以不

for i in reversed(my_list): 

只通过一次列表。这正是这些类型的助手函数的要点。你知道吗

注意你可以用

for i in my_list[::-1]:

这是一种常见的迭代方式,但是使用切片已经返回了一个列表-与my_list.reverse类似,还有一个额外的n。你知道吗

相关问题 更多 >