I think in Python 3 I'll be able to do:
first, *rest = l
first = l
rest = l[1:]
first, rest = l, l[1:]
Basically the same, except that it's a oneliner. Tuple assigment rocks.
This is a bit longer and less obvious, but generalized for all iterables (instead of being restricted to sliceables):
i = iter(l) first = next(i) # i.next() in older versions rest = list(i)