Cómo intercambiar dos variables en Python (sin variables temporales)

Aprenda a intercambiar dos variables en Python. Comprenda el empaquetado y desempaquetado de tuplas Pythonic y compárelo con el intercambio de variables temporales tradicional.

Pruebe esta solución en el Editor

Descripción general

Intercambiar los valores de dos variables es una operación clásica que se utiliza en algoritmos de clasificación, reasignaciones de variables y rotaciones de valores. En lenguajes de programación de nivel inferior como C, C++ o Java, el intercambio requiere declarar una variable temporal para contener un valor de modo que no se sobrescriba durante la asignación.

En Python, puedes lograr este intercambio en una sola línea sin usar ningún almacenamiento temporal: `a, b = b, a`. Este enfoque elegante no sólo es más limpio sino que también está altamente optimizado. Debajo del capó, Python utiliza el empaquetado y desempaquetado de tuplas para realizar el intercambio de forma segura.

Cuando Python evalúa `a, b = b, a`, primero construye una tupla que contiene los valores `(b, a)` en la memoria (empaquetado de tuplas). Luego, descomprime esa tupla nuevamente en las variables del lado izquierdo, asignando el valor anterior de `b` a `a` y el valor anterior de `a` a `b` (desempaquetado de tupla). Esto garantiza que ambas variables se actualicen simultáneamente sin colisiones de datos.

Código y salida de ejecución

Este código demuestra el intercambio de dos variables en Python usando el desempaquetado de tuplas y lo compara con el método tradicional de variable temporal.

swap_variables.py
Pruébelo en el editor
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}")
Salida terminal
Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20

Implementación paso a paso

  • Coloque las variables cuyos valores desea recibir en el lado izquierdo de la asignación: variable1, variable2.
  • Coloque las variables que contienen los valores de origen en el lado derecho: variable2, variable1.
  • Utilice el operador de asignación (=) para activar el intercambio automático de empaquetado y desempaquetado de tuplas de Python.

Preguntas frecuentes

¿El intercambio de desempaquetado de tuplas está a salvo de las condiciones de carrera?

En un entorno de un solo subproceso, es completamente atómico porque la expresión de la derecha se evalúa completamente como una tupla antes de que comience cualquier asignación a las variables de la izquierda.

¿Puedo intercambiar más de dos variables simultáneamente?

¡Sí! Puede intercambiar cualquier cantidad de variables utilizando la misma sintaxis de tupla. Por ejemplo, a, b, c = b, c, a desplaza los valores hacia la izquierda.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.