的第一個元素我有一個列表:列表的最後一個元素轉移到列表
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