Problème :Étant donné deux variables a
et b
. Utilisez une seule ligne de code Python pour échanger les variables afin d'attribuer la valeur de a
à b
et la valeur de b
à a
.
Exemple :Dites, vous devez les entiers a=21
et b=42
. Vous souhaitez échanger les variables afin que a=42
et b=21
.
a = 21 b = 42 # SWAP MAGIC HERE print(a, b) # 42 21
Comment passer aux variables en tant que Python one-liner ?
Plongeons-nous dans les meilleures façons d'échanger des entiers !
Échanger des entiers
Pour échanger deux variables a et b, utilisez l'expression d'affectation multiple a, b = b, a
qui attribue la valeur de a
à b
et la valeur de b
à a
.
a = 21 b = 42 # Swap One-Liner a, b = b, a # Print the result to the shell print(a, b) # 42 21
Explication
L'interpréteur Python évalue chaque expression de gauche à droite. Python se rend compte que pour attribuer la valeur aux variables, il doit d'abord évaluer le côté droit de l'équation. Voici donc les étapes à suivre pour déterminer le résultat de la ligne a, b = b, a
:
- Le côté droit
b, a
est l'abréviation de(b, a)
et, ainsi, il crée un tuple en mémoire avec deux valeurs. La première valeur de tuple est l'objet auquel la variableb
points en mémoire (ici :42
). La deuxième valeur de tuple est l'objet auquel la variablea
points en mémoire (ici :21
). Dans notre cas, la mémoire contient maintenant un nouvel objet tuple(42, 21)
. - Python affecte maintenant ce tuple à la liste des variables définies sur le côté gauche de l'équation (ici :
a, b = ...
). Le nom de la variablea
pointe maintenant vers la première valeur de tuple (ici :42
). Le nom de la variableb
pointe maintenant vers la deuxième valeur de tuple (ici :21
). - De cette façon, le tuple est décompressé pour les variables sur le côté gauche. Variables
a
etb
ont été échangés.
Faites-le vous-même : Vous pouvez voir ce code et la mémoire en action dans le visualiseur de mémoire interactif :
Cliquez sur "Suivant" pour voir comment les objets mémoire se déroulent.
Cela fonctionne-t-il également pour échanger d'autres objets comme des listes ou des chaînes ?
Comment échanger des listes, des tuples et d'autres objets
Essayons dans notre shell de code interactif :
Exercice :Imprime le résultat des variables a
et b
avant et après l'échange. Pouvez-vous échanger n'importe quel objet en utilisant la fonctionnalité d'affectation multiple de Python ?
Vous pouvez voir ce code et la mémoire en action dans le visualiseur de mémoire interactif :