Tupla de descompactação do Python

Resumo : neste tutorial, você aprenderá como descompactar tuplas em Python.

Revendo tuplas Python

Python define uma tupla usando vírgulas ( ,), não parênteses (). Por exemplo, o seguinte define uma tupla com dois elementos:

1,2 Linguagem de código:  Python  ( python )

Python usa parênteses para tornar a tupla mais clara:

(1, 2)Linguagem de código:  Python  ( python )

Python também usa parênteses para criar uma tupla vazia:

()Linguagem de código:  Python  ( python )

Além disso, você pode usar o tuple()construtor assim:

tuple()Linguagem de código:  Python  ( python )

Para definir uma tupla com apenas um elemento, ainda é necessário usar vírgula. O exemplo a seguir ilustra como definir uma tupla com um elemento:

1,Linguagem de código:  Python  ( python )

É equivalente ao seguinte:

(1, )Linguagem de código:  Python  ( python )

Observe que o seguinte é um número inteiro , não uma tupla:

(1)Linguagem de código:  Python  ( python )

Descompactando uma tupla

Descompactar uma tupla significa dividir os elementos da tupla em variáveis ​​individuais . Por exemplo:

x, y = (1, 2)Linguagem de código:  Python  ( python )

O lado esquerdo:

x, yLinguagem de código:  Python  ( python )

é uma tupla de duas variáveis x​​e y.

O lado direito também é uma tupla de dois inteiros 1e 2.

A expressão atribui os elementos da tupla do lado direito (1, 2) a cada variável do lado esquerdo (x, y) com base na posição relativa de cada elemento.

No exemplo acima, xlevará 1e ylevará 2.

Veja outro exemplo:

x, y ,z = 10, 20, 30Linguagem de código:  Python  ( python )

O lado direito é uma tupla de três inteiros 10,, 20e 30. Você pode verificar rapidamente seu tipo da seguinte maneira:

numbers = 10, 20, 30
print(type(numbers))Linguagem de código:  Python  ( python )

Saída:

<class 'tuple'>Linguagem de código:  Python  ( python )

No exemplo acima, as variáveis x​​, ye zassumirão os valores 10, 20e 30respectivamente.

Usando descompactação de tupla para trocar valores de duas variáveis

Tradicionalmente, para trocar os valores de duas variáveis, você usaria uma variável temporária como esta:

x = 10
y = 20

print(f'x={x}, y={y}')

tmp = x
x = y
y = tmp

print(f'x={x}, y={y}')Linguagem de código:  Python  ( python )

Saída:

x=10, y=20
x=20, y=10   Linguagem de código:  Python  ( python )

Em Python, você pode usar a sintaxe de descompactação da tupla para obter o mesmo resultado:

x = 10
y = 20

print(f'x={x}, y={y}')

x, y = y, x

print(f'x={x}, y={y}')Linguagem de código:  Python  ( python )

Saída:

x=10, y=20
x=20, y=10  Linguagem de código:  Python  ( python )

A expressão a seguir troca os valores de duas variáveis, x e y.

x, y = y, xLinguagem de código:  Python  ( python )

Nesta expressão, Python avalia primeiro o lado direito e depois atribui a variável do lado esquerdo aos valores do lado direito.

ValueError: muitos valores para descompactar

O exemplo a seguir descompacta os elementos de uma tupla em variáveis. No entanto, isso resultará em um erro:

x, y = 10, 20, 30Linguagem de código:  Python  ( python )

Erro:

ValueError: too many values to unpack (expected 2)Linguagem de código:  Python  ( python )

Este erro ocorre porque o lado direito retorna três valores enquanto o lado esquerdo possui apenas duas variáveis.

Para corrigir isso, você pode adicionar uma _variável:

x, y, _ = 10, 20, 30Linguagem de código:  Python  ( python )

A _variável é uma variável regular em Python. Por convenção, é chamada de variável fictícia.

Normalmente, você usa a variável fictícia para descompactar quando não se importa e usa seu valor depois.

Descompactação estendida usando o operador *

Às vezes, você não deseja descompactar todos os itens de uma tupla. Por exemplo, você pode querer descompactar o primeiro e o segundo elementos. Neste caso, você pode usar o *operador. Por exemplo:

r, g, *other = (192, 210, 100, 0.5)Linguagem de código:  Python  ( python )

Saída:

192
210
[100, 0.5]Linguagem de código:  Python  ( python )

Neste exemplo, Python atribui 192a r, 210a g. Além disso, Python empacota os elementos restantes 100em 0.5uma lista e os atribui à othervariável.

Observe que você só pode usar o *operador uma vez no lado esquerdo de uma tarefa de descompactação.

O exemplo a seguir resulta em erro:

x, y, *z, *t = (10, 20, 30, '10:30')Linguagem de código:  Python  ( python )

Erro:

SyntaxError: two starred expressions in assignmentLinguagem de código:  Python  ( python )

Usando o operador * no lado direito

Python permite que você use o *operador do lado direito. Suponha que você tenha duas tuplas:

odd_numbers = (1, 3, 5)
even_numbers = (2, 4, 6)Linguagem de código:  Python  ( python )

O exemplo a seguir usa o *operador para descompactar essas tuplas e mesclá-las em uma única tupla:

numbers = (*odd_numbers, *even_numbers)
print(numbers)Linguagem de código:  Python  ( python )

Saída:

(1, 3, 5, 2, 4, 6)Linguagem de código:  Python  ( python )

Resumo

  • Python usa vírgulas ( ,) para definir uma tupla, não parênteses.
  • Descompactar tuplas significa atribuir elementos individuais de uma tupla a múltiplas variáveis.
  • Use o *operador para atribuir os elementos restantes de uma atribuição de descompactação em uma lista e atribuí-los a uma variável.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *