5.3 Tuples and Sequences

Vimos que listas e sequências de caracteres têm muitas propriedades comuns, como operações de indexação e fatiamento. Eles são dois exemplos de tipos de dados sequênciais. Como o Python é uma linguagem em evolução, outros tipos de dados sequêncial podem ser adicionados. Há também outro tipo de dados sequêncial padrão: a tupla.Uma tupla consiste em um número de valores separados por vírgulas, por exemplo:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

Como você pode ver, as tuplas de saída estão sempre entre parênteses, de modo que as tuplas aninhadas sejam interpretadas corretamente; eles podem ser inseridos com ou sem parênteses circundantes, embora frequentemente parênteses sejam necessários de qualquer maneira (se a tupla fizer parte de uma expressão maior).Tuplas tem muitos usos. Por exemplo: (x, y) pares de coordenadas, registros de funcionários de um banco de dados, etc.
As tuplas, como strings, são imutáveis: não é possível atribuir aos itens individuais de uma tupla (você pode simular muito do mesmo efeito com fatiamento e concatenação, embora). Também é possível criar tuplas que contenham objetos mutáveis, como listas.

Um problema especial é a construção de tuplas contendo 0 ou 1 itens: a sintaxe tem algumas peculiaridades extras para acomodá-las. As tuplas vazias são construídas por um par de parênteses vazios; uma tupla com um item é construída seguindo um valor com uma vírgula (não é suficiente incluir um único valor entre parênteses). Feio, mas eficaz. Por exemplo:

>>> empty = ()
>>> singleton = 'hello',    # >> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)

A declaração t = 12345, 54321, ‘hello!’ é um exemplo de empacotamento de tupla: os valores 12345, 54321 e ‘hello!’ são embalados juntos em uma tupla. A operação inversa também é possível:

>>> x, y, z = t

Isso é chamado apropriadamente de descompactação de seqüência. A descompactação de sequências exige que a lista de variáveis à esquerda tenha o mesmo número de elementos que o comprimento da sequência. Note que a atribuição múltipla é realmente apenas uma combinação de empacotamento de tupla e descompactação de sequência!

Há um pouco de assimetria aqui: agrupar vários valores sempre cria uma tupla e a descompactação funciona para qualquer sequência.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s