Python >> Tutoriel Python >  >> Python

Comment échanger deux variables dans une ligne Python ?

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 variable b points en mémoire (ici :42 ). La deuxième valeur de tuple est l'objet auquel la variable a 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 variable a pointe maintenant vers la première valeur de tuple (ici :42 ). Le nom de la variable b 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 et b 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 :