将list的最后一个元素移到lis的第一个元素

2024-05-19 19:17:58 发布

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

我有一份清单:

a = [1, 2, 3, 4, 5, 6, 7]

我希望最后一个元素排在第一位,其余元素移到下一个元素地点。我的预期结果为:

^{pr2}$

Tags: 元素地点pr2
2条回答

弹出,然后插入。在

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

要更改列表,只需将其弹出并插入前面:

a.insert(0, a.pop())

演示:

^{pr2}$

但是,请注意所有其他元素都必须上移一个位置,因此在内部执行O(N)步骤(对于列表中的N个元素)。在

您还可以使用切片和串联创建一个新的列表对象:

a = a[-1:] + a[:-1]

但这是更低效的,因为现在您必须创建3个新的列表对象,所采取的步骤数加倍。在

如果需要定期旋转列表,则可以使用^{} object代替:

from collections import deque

a = deque([1, 2, 3, 4, 5, 6, 7])
a.rotate(1)

deque旋转是一个O(K)过程,其中K是旋转的步数。在

deque的缺点是,任意索引会花费最多O(N)个步骤才能到达列表中的元素N,而对常规列表中任何元素的索引都是O(1)常数时间。在

相关问题 更多 >