【发布时间】:2020-02-29 22:28:58
【问题描述】:
如果我写了:
item_list = item_list[::-1]
这会是 O(1) 空间吗?我认为 item_list[::-1] 会导致创建一个新列表,所以这可能是 O(n)。 item_list.reverse() 那么是在 python 中用 O(1) 空间反转的正确方法吗?
【问题讨论】:
-
不,它会创建列表的副本,并且需要线性空间/时间
-
我认为,
reversed()的复杂度为 O(1)。 -
@Olvin 当然可以,但如果你把它列出来就不行
-
@OlvinRoght:它是一个生成器。如果你在它上面使用
list(..),你会复制一份,因此有 O(n) 空间。 -
@WillemVanOnsem 术语 nitpick,它返回一个迭代器,而不是一个生成器
标签: python python-3.x list time-complexity reverse