2024-05-19 19:17:58 发布
网友
我有一份清单:
a = [1, 2, 3, 4, 5, 6, 7]
我希望最后一个元素排在第一位,其余元素移到下一个元素地点。我的预期结果为:
弹出,然后插入。在
>>> 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())
演示:
但是,请注意所有其他元素都必须上移一个位置,因此在内部执行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
deque的缺点是,任意索引会花费最多O(N)个步骤才能到达列表中的元素N,而对常规列表中任何元素的索引都是O(1)常数时间。在
弹出,然后插入。在
要更改列表,只需将其弹出并插入前面:
演示:
^{pr2}$但是,请注意所有其他元素都必须上移一个位置,因此在内部执行O(N)步骤(对于列表中的N个元素)。在
您还可以使用切片和串联创建一个新的列表对象:
但这是更低效的,因为现在您必须创建3个新的列表对象,所采取的步骤数加倍。在
如果需要定期旋转列表,则可以使用^{} object 代替:
deque
旋转是一个O(K)过程,其中K是旋转的步数。在deque
的缺点是,任意索引会花费最多O(N)个步骤才能到达列表中的元素N,而对常规列表中任何元素的索引都是O(1)常数时间。在相关问题 更多 >
编程相关推荐