Slicing is a little smarter than that; you can use negative indices to count from the end:
a[-1:] + a[:-1]
Demo:
>>> a=[1,2,3,4] >>> a[-1:] + a[:-1] [4, 1, 2, 3]
This works for an arbitrary number of elements that need to be brought to the fore:
>>> a[-2:] + a[:-2] [3, 4, 1, 2]
Using slicing like this is comparable in speed to using .insert() + .pop() (in a short list):
>>> timeit.timeit('a[-1:] + a[:-1]', 'a=[1,2,3,4]') 0.59950494766235352 >>> timeit.timeit('a.insert(0,a.pop(-1))', 'a=[1,2,3,4]') 0.52790379524230957
but wins hands if you need to shift more than one element:
>>> timeit.timeit('a[-2:] + a[:-2]', 'a=[1,2,3,4]') 0.58687901496887207 >>> timeit.timeit('a.insert(0,a.pop(-1));a.insert(0,a.pop(-1))', 'a=[1,2,3,4]') 1.0615170001983643