Comment échanger deux variables ou plus en Python ?

Introduction

L’échange de variables est une opération fondamentale en programmation, souvent nécessaire lors de la réorganisation de données, de la rotation de valeurs ou de l’implémentation d’algorithmes. Python rend ce processus particulièrement propre et efficace grâce au déballage de tuples, ce qui élimine le besoin d’une variable temporaire et réduit les risques d’erreurs.

La méthode Pythonique pour échanger deux variables

Python permet d’échanger deux variables en une seule ligne, sans utiliser de variable temporaire :

1
a, b = b, a

Cette technique utilise le packing et unpacking de tuples, ce qui rend l’échange sûr, efficace et facile à lire.

Exemple

1
2
3
4
5
6
a = 5
b = 10

a, b = b, a

print(a, b)  # Résultat : 10 5

La méthode classique (avec une variable temporaire)

Vous pouvez encore utiliser la méthode traditionnelle :

1
2
3
temp = a
a = b
b = temp

Elle fonctionne, mais elle est, dans la plupart des cas, plus lente que l’utilisation des tuples.

Comparaison de performances (Tuple vs Variable temporaire)

Avec timeit, nous avons comparé 10 millions d’échanges :

  • Déballage de tuple : ~0,229 s
  • Méthode temporaire : ~0,253 s

Le swap par tuple est légèrement plus rapide et plus Pythonique.

Échanger PLUS de deux variables

Python ne limite pas l’échange à deux variables — vous pouvez en échanger ou en faire pivoter autant que vous voulez.

Exemple : rotation de 3 variables

1
2
3
4
5
a, b, c = 1, 2, 3

a, b, c = b, c, a

print(a, b, c)  # Résultat : 2 3 1

Exemple : échanger 4 variables

1
x, y, z, w = w, x, y, z

Cela fait avancer les quatre valeurs d’un cran.

Python gère le côté droit comme un tuple, donc aucune valeur n’est écrasée pendant l’échange.

Comment Python échange les variables en interne

Pour la ligne suivante :

1
a, b, c = b, c, a

Python effectue les opérations suivantes en arrière-plan :

1. Création d’un tuple temporaire

1
2
temp_tuple = (b, c, a)
# Exemple : (2, 3, 1)

2. Déballage dans les variables de gauche

1
2
3
a = temp_tuple[0]
b = temp_tuple[1]
c = temp_tuple[2]

3. Suppression du tuple temporaire

Python le supprime automatiquement.

Conclusion (Bonne pratique)

Pour presque tout votre code Python :

Préférez :

1
a, b = b, a

Évitez, sauf nécessité :

1
2
3
temp = a
a = b
b = temp

Le déballage de tuple est :

  • Plus rapide
  • Plus propre
  • Idiomatique en Python
  • Compatible avec un nombre illimité de variables
  • Sûr pour les objets mutables et immuables

Références