您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

移动值,但在Python列表中保留顺序

移动值,但在Python列表中保留顺序

a = [1,2,3,4,5] >>> a.append(a.pop(0)) >>> a [2, 3, 4, 5, 1]

但是,这很昂贵,因为它必须移动整个列表的内容,即O(n)。collections.deque如果在您的Python版本中可用,则可能是一个更好的选择,它允许在大约O(1)的时间内从任一端插入和删除对象:

>>> a = collections.deque([1,2,3,4,5])
>>> a
deque([1, 2, 3, 4, 5])
>>> a.rotate(-1)
>>> a
deque([2, 3, 4, 5, 1])

还要注意,这两种解决方案都涉及更改原始序列对象,而您的解决方案将创建一个新列表并将其分配给a。因此,如果我们这样做:

>>> c = a
>>> # rotate a

使用您的方法c将继续引用原始的未旋转列表,而使用我的方法,它将引用更新的已 旋转 列表/双端队列。

python 2022/1/1 18:46:57 有318人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶