range(n)的时间复杂度[重复]

问题描述 投票:-1回答:1

想象此代码:

def code(n): 
    a = range(n) 
    b = list(a) 
    return b 

我是否正确地说:

  • [range(n)需要O(1)时间(在Python中调用range是恒定时间,对吧?]
  • [list(a)需要O(n)时间,并且
  • return语句需要O(1)时间?
python time-complexity
1个回答
1
投票

这在Python 3中是正确的; range函数返回一个惰性迭代。

但是,如果您使用的是Python 2,则range(n)也是O(n)操作,因为它创建了一个列表。 Python 2中的range(n)等同于Python 3中的list(range(n))

return语句花费O(1)时间,因为它只返回对列表的引用,而不是列表的副本。

© www.soinside.com 2019 - 2024. All rights reserved.