for a in ([1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8],
[1,2,3,4],
[1,2,3],
[1,2,],
[1],
[]):
print a
[ a.insert(i,a.pop()) for i in xrange(1,len(a)+1,2)]
print a,'\n'
результат
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 9, 2, 8, 3, 7, 4, 6, 5]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 8, 2, 7, 3, 6, 4, 5]
[1, 2, 3, 4]
[1, 4, 2, 3]
[1, 2, 3]
[1, 3, 2]
[1, 2]
[1, 2]
[1]
[1]
[]
[]
Обновление 1
Сравнение с кодом Zeekay:
from time import clock
n = 100000
te = clock()
for i in xrange(n):
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
[ a.insert(i,a.pop()) for i in xrange(1,len(a)+1,2)]
print clock()-te
from itertools import chain, izip
def reorder(a):
gen = chain(*izip(a, reversed(a)))
for _ in a:
yield next(gen)
te = clock()
for i in xrange(n):
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
a = list(reorder(a))
print clock()-te
результат
2.36667984339
5.00051766356
Мой методизменения a на месте