Ahhh, l’unpacking… On croit qu’on a complètement fait le tour de cette fonctionalité merveilleuse, et PAF, on découvre encore autre chose.
Par exemple, la syntaxe a été améliorée avec Python 3, et accepte maintenant un unpacking partiel !
Ca se fait en l’utilisant l’opérateur splat, c’est à dire l’étoile :
>>> l = list(range(5)) >>> l [0, 1, 2, 3, 4] >>> a, *b = l >>> a 0 >>> b [1, 2, 3, 4] >>> a, *b, c = l >>> a 0 >>> b [1, 2, 3] >>> c 4 |
Ca marche bien entendu également dans les boucles for
.
on ne peut pas faire cela en python 2.x ?
bon je me réponds zamoimeme j’ai fait le test tout connement : nan on peut pas : sinon ca donne
In [4]: a, *b = l
File "", line 1
a, *b = l
^
SyntaxError: invalid syntax
yeah
@foxmask : en 2.7, on pouvait faire :
Mais ça ne marque qu’avec les sliceable, donc pas avec tous les itérables comme les générateurs.
Ça donnerait quoi ça ?
Ça fait une exception, ou ça met une liste vide dans d ?
(j’ai pas de python 3 sous la main pour le tester)
Liste vide apparemment ce qui n’est pas plus mal.
@Recher : si tu as un navigateur sous la main, tu as un python 3 sous la main ;)