想象此代码:
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 3中是正确的; range
函数返回一个惰性迭代。
但是,如果您使用的是Python 2,则range(n)
也是O(n)操作,因为它创建了一个列表。 Python 2中的range(n)
等同于Python 3中的list(range(n))
。
return
语句花费O(1)时间,因为它只返回对列表的引用,而不是列表的副本。