的第一个元素我有一个列表:列表的最后一个元素转移到列表
a = [1, 2, 3, 4, 5, 6, 7]
我想最后一个元素来在首位,其余全部元素转移到下一个place.My预期结果为: :
a = [7, 1, 2, 3, 4, 5, 6]
的第一个元素我有一个列表:列表的最后一个元素转移到列表
a = [1, 2, 3, 4, 5, 6, 7]
我想最后一个元素来在首位,其余全部元素转移到下一个place.My预期结果为: :
a = [7, 1, 2, 3, 4, 5, 6]
要改变就地列表,简单地弹出其关闭,并在前面插入:
a.insert(0, a.pop())
演示:
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a.insert(0, a.pop())
>>> a
[7, 1, 2, 3, 4, 5, 6]
但是,请注意具有所有其他元素被移位为这个地方,所以在内部O的取(N)的步骤(对于列表中的N个元素)。
您还可以通过使用切片和联接创建新列表对象:
a = a[-1:] + a[:-1]
但这更低效仍像现在一样,你必须创建3个新的列表对象,加倍采取的步数。
如果您需要经常旋转列表中,您可能需要使用一个collections.deque()
object来代替:
from collections import deque
a = deque([1, 2, 3, 4, 5, 6, 7])
a.rotate(1)
deque
旋转是O(K)的过程,其中K是旋转的步数。
一个deque
的disavantage是任意索引可以花费你到O(N)的步骤去N元素在列表中,而在常规列表索引的任何元素为O(1)固定时间。
弹出并插入它。
>>> a = [1,2,3,4,5,6,7]
>>> a.insert(0, a.pop())
>>> a
[7, 1, 2, 3, 4, 5, 6]
thx它效果不错 –
是的,'deque'绝对是这里的正确数据结构。 – timgeb