Je pense qu'en Python 3 je pourrai faire:
first, *rest = l
c'est exactement ce que je veux, mais j'utilise 2.6. Pour l'instant je fais:
first = l[0]
rest = l[1:]
C'est bien, mais je me demandais simplement s'il y avait quelque chose de plus élégant.
first, rest = l[0], l[1:]
Fondamentalement, la même chose, sauf qu'il s'agit d'un oneliner. Roches d'assignation de tuple.
C'est un peu plus long et moins évident, mais généralisé pour tous les itérables (au lieu de se limiter aux tranches):
i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
Tu peux faire
first = l.pop(0)
puis l
sera le reste. Cependant, cela modifie votre liste d'origine, alors ce n'est peut-être pas ce que vous voulez.
Encore une autre, en travaillant avec python 2.7. Utilisez simplement une fonction intermédiaire. Logique car le nouveau comportement imite ce qui s'est passé pour le passage des paramètres de fonctions.
li = [1, 2, 3]
first, rest = (lambda x, *y: (x, y))(*li)