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.
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.
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}")Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20Implementaçã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
Aprenda as melhores técnicas de formatação de strings em Python. Compare strings F modernas, format() e formatação percentual com exemplos de código.
Como verificar o tipo de dados em PythonAprenda como verificar tipos de dados em Python. Entenda quando usar type() vs isinstance(), lidar com classes personalizadas e escrever validações de verificação de tipo seguras.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Variáveis e tipos de dados Python explicados
Entenda as variáveis do Python e os principais tipos de dados (strings, inteiros, flutuantes, booleanos). Um guia completo para iniciantes sobre atribuição de memória em Python.
Folha de dicas dos métodos de string Python
Um guia de referência completo para manipulação de strings em Python. Domine a formatação, pesquisa, divisão, substituição e verificação de propriedades de string.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.