Comment échanger deux variables en Python (sans variables temporaires)

Apprenez à échanger deux variables en Python. Comprenez l'emballage et le déballage de tuples pythoniques et comparez-les à l'échange de variables temporaires traditionnel.

Essayez cette solution dans l'éditeur

Aperçu

L'échange des valeurs de deux variables est une opération classique utilisée dans les algorithmes de tri, les réaffectations de variables et les rotations de valeurs. Dans les langages de programmation de niveau inférieur comme C, C++ ou Java, l'échange nécessite de déclarer une variable temporaire pour contenir une valeur afin qu'elle ne soit pas écrasée lors de l'affectation.

En Python, vous pouvez réaliser cet échange en une seule ligne sans utiliser de stockage temporaire : `a, b = b, a`. Cette approche élégante est non seulement plus propre mais également hautement optimisée. Sous le capot, Python utilise l'emballage et le déballage des tuples pour effectuer l'échange en toute sécurité.

Lorsque Python évalue « a, b = b, a », il construit d'abord un tuple contenant les valeurs « (b, a) » en mémoire (package de tuple). Ensuite, il décompresse ce tuple dans les variables du côté gauche, en attribuant l'ancienne valeur de « b » à « a » et l'ancienne valeur de « a » à « b » (décompression du tuple). Cela garantit que les deux variables sont mises à jour simultanément sans collisions de données.

Sortie de code et d'exécution

Ce code montre l'échange de deux variables en Python à l'aide du déballage de tuple et le compare à la méthode traditionnelle des variables temporaires.

swap_variables.py
Essayez dans l'éditeur
x = 10
y = 20
print(f"Original: x = {x}, y = {y}")

# 1. The Pythonic Way (Tuple unpacking)
x, y = y, x
print(f"Pythonic Swap: x = {x}, y = {y}")

# 2. The Traditional Way (Using a temporary variable)
temp = x
x = y
y = temp
print(f"Traditional Swap: x = {x}, y = {y}")
Sortie terminale
Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20

Mise en œuvre étape par étape

  • Placez les variables dont vous souhaitez recevoir les valeurs sur le côté gauche de l'affectation : variable1, variable2.
  • Placez les variables contenant les valeurs sources sur le côté droit : variable2, variable1.
  • Utilisez l'opérateur d'affectation (=) pour déclencher l'échange automatisé de compression et de décompression de tuples de Python.

Foire aux questions

L'échange de déballage de tuple est-il à l'abri des conditions de concurrence ?

Dans un environnement monothread, c'est complètement atomique car l'expression de droite est entièrement évaluée en tuple avant le début de toute affectation aux variables de gauche.

Puis-je échanger plus de deux variables simultanément ?

Oui ! Vous pouvez échanger n'importe quel nombre de variables en utilisant la même syntaxe de tuple. Par exemple, a, b, c = b, c, a décale les valeurs vers la gauche.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.