Como trocar duas variáveis em Python (sem variáveis temporárias)

Aprenda como trocar duas variáveis em Python. Entenda o empacotamento e desempacotamento de tuplas Pythonic e compare-o com a tradicional troca de variáveis ​​temporárias.

Experimente esta solução no Editor

Visão geral

Trocar os valores de duas variáveis é uma operação clássica usada em algoritmos de classificação, reatribuições de variáveis e rotações de valores. Em linguagens de programação de nível inferior como C, C++ ou Java, a troca requer a declaração de uma variável temporária para conter um valor, de modo que não seja substituído durante a atribuição.

Em Python, você pode fazer essa troca em uma única linha sem usar nenhum armazenamento temporário: `a, b = b, a`. Essa abordagem elegante não é apenas mais limpa, mas também altamente otimizada. Nos bastidores, o Python usa empacotamento e descompactação de tuplas para realizar a troca com segurança.

Quando Python avalia `a, b = b, a`, ele primeiro constrói uma tupla contendo os valores `(b, a)` na memória (empacotamento de tupla). Em seguida, ele descompacta essa tupla de volta nas variáveis ​​do lado esquerdo, atribuindo o valor antigo de `b` a `a`, e o valor antigo de `a` a `b` (descompactação da tupla). Isto garante que ambas as variáveis ​​sejam atualizadas simultaneamente sem colisões de dados.

Saída de código e execução

Este código demonstra a troca de duas variáveis ​​em Python usando descompactação de tupla e compara-a com o método tradicional de variável temporária.

swap_variables.py
Experimente no 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}")
Saída terminal
Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20

Implementação passo a passo

  • Coloque as variáveis que deseja que recebam os valores no lado esquerdo da atribuição: variável1, variável2.
  • Coloque as variáveis contendo os valores de origem no lado direito: variável2, variável1.
  • Use o operador de atribuição (=) para acionar a troca automatizada de empacotamento e descompactação de tuplas do Python.

Perguntas frequentes

A troca de descompactação da tupla está protegida contra condições de corrida?

Em um ambiente de thread único, é completamente atômico porque a expressão à direita é totalmente avaliada para uma tupla antes de qualquer atribuição às variáveis à esquerda começar.

Posso trocar mais de duas variáveis simultaneamente?

Sim! Você pode trocar qualquer número de variáveis ​​usando a mesma sintaxe de tupla. Por exemplo, a, b, c = b, c, a desloca os valores para a esquerda.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.