Как уже упоминали другие, когда вы разрезаете список, он создает новую копию, которую вы вместо этого модифицируете на месте.Рассмотрим либо:
def foo(a):
a[0], a[1] = a[1], a[0]
return a
a = [1,2,3]
a[1:] = foo(a[1:])
или
def foo(a, i=0):
a[i], a[i+1] = a[i+1], a[i]
, где i
- ваш индекс среза.