Nesta aula estudaremos as Tuplas, isto é, uma Estrutura de Dados semelhante as Listas porém imutável. |
DEFINIÇÃO DE TUPLA
Tupla é uma Lista imutável. O que diferencia a Estrutura de Dados Lista da Estrutura de Dados Tupla é que a primeira pode ter elementos adicionados a qualquer momento, enquanto que a segunda estrutura, após definida, não permite a adição ou remoção de elementos.
Devemos pensar num primeiro momento, que a Tupla é uma lista que restringe a adição, alteração, remoção e o ordenamento do elementos. No entanto, pensar numa tupla como sendo somente uma lista imutável não está totalmente correto.
Tuplas possuem muitas características das listas Listas, porém, possui um propósito diferente e não raramente levamos um tempo para conseguir realmente perceber a sutil diferença.
Segundo Phillip J. Eby, contribuidor de diversos projetos do Python e criador da ferramenta Setuptools, numa discussão sobre a remoção das tuplas para a versão 3x do Python, trouxe uma argumentação bastante interessante, diz ele:
É um equívoco pensar nas tuplas como listas constantes. As listas são destinadas a serem sequências homogêneas, enquanto que os Tuplas são estruturas de dados heterogêneas. Phillip J. Eby
Em outras palavras, ele disse que em uma lista, as informações, geralmente são de um mesmo tipo, por exemplo, uma lista de e-mails. Enquanto que numa tupla, os elementos são de tipos distintos, por exemplo, uma Tupla que contém o dia, o dia da semana, o mês e o ano.
t = ["10", "segunda-feita", "Fevereiro", 2022]
O que estudamos até o momento a respeito de listas, pode ser utilizado para manipular e controlar Tuplas, salvo a alteração da lista ou de seus elementos.
>>> t = ("x", "y", 10, 20, "c")
>>> t
("x", "y", 10, 20, "c")
>>> t[0]
"x"
>>> t[-1]
"c"
>>> t[1:3]
('y', 10, 20)
- Uma Tupla é definida da mesma forma que uma lista, o que as diferencias, são os caracteres que as delimitam. Uma Lista, tem seus elementos delimitados por colchetes, enquanto que a Tupla, tem seus elementos delimitados por parêntesis.
- A ordem dos elementos numa Tupla será a ordem na qual estes foram definidos, ou seja, não é possível ordenar em tempo de execução os elementos.
- O primeiro elemento de uma Tupla também possui índice igual a 0 e o último índice igual a -1. Assim o acesso a elementos, bem como o fatiamentos funciona da mesma forma como já estudado no fatiamento de Listas.
NOTAÇÃO
É comum diferenciarmos a lista da tupla pelo seus caracteres delimitadores. Por exemplo, os elementos de uma lista são delimitados por colchetes, enquanto que os elementos de uma tupla por parêntesis.
Distinguir as estruturas pelo seus caracteres delimitadores não é um erro, porém, na documentação oficial do Python consta que uma tupla é declarada pela utilização do operador vírgula, e que é utilizado para separar os elementos.
A única exceção é na declaração de tuplas vazias. No código a seguir iremos declarar algumas tuplas e adicionaremos comentários em cima de cada declaração.
#tupla declarada sem o uso de parentesis
t1 = 1, 2, 3
#tupla declarada com o uso de parentesis
t2 = (1, 2, 3)
#tupla com um único elemento
t3 = 1,
#tupla vazia
t4 = ()
Inicialmente declaramos as variáveis t1
e t2
e associamos a cada uma tupla contendo 3 elementos. Ambas declarações são identicas e possuem um mesmo resultado.
Em seguida declaramos uma terceira tupla t3
que possui um único elemento. Observe que a declaração é finalizada com uma vírgula! É dessa forma que declaramos tuplas com um único elemento.
Por fim, declaramos uma tupla vazia t4
e nesta situação foram os parentesis que determinam o tipo do objeto declarado. Essa é a única situação onde é obrigatório a utilização dos parentesis na declaração da tupla.
Vejamos agora o que a documentação do Python trás sobre a declaração de tuplas:
Observe que é a vírgula que é realmente define uma tupla, não os parênteses. Os parênteses são opcionais, exceto no caso da tupla vazia, ou quando são necessários para evitar a ambigüidade sintática. Por exemplo, :code:`f(a, b, c)` é uma chamada de função com três argumentos, enquanto :code:`f((a, b, c))` é uma chamada de função com uma tupla-3 como único argumento.
O TIPLO tuple
No código a seguir, vamos obter o tipo reconhecido pelo Python.
>>> type((1,2,3))
<class 'tuple'>
>>> x = 1,2,3
>>> type(x)
<class 'tuple'>
>>> y = "a", 1, True
>>> type(y)
<class 'tuple'>
>>> z = (True, True, False)
>>> type(z)
<class 'tuple'>
No código acima, definimos algumas estruturas e logo em seguida, verificamos o tipo reconhecido pelo Python, como podemos ver, em todos os casos, a estrutura reconhecida foi sendo a Tupla.
CONCLUSÃO RÁPIDA DAS TUPLAS
Todas as ideias estudadas até o momento em relação as listas, servem também, para a estrutura Tupla, com a ressalva de que não é possível adicionar ou remover novos elementos durante o tempo de execução.
Porém, a Iteração, junção e a ideia de elementos como sendo Objetos, são os mesmos e possuem o mesmo funcionamento.
DECLARAÇÃO DE TUPLAS
Uma Tupla é uma estrutura que contém nenhum ou vários elementos. Os elementos de uma Tupla devem ser separados por vírgulas e podem ser delimitados por parêntesis. Uma sequência qualquer, onde os elementos estão separados por vírgula é reconhecido pela linguagem como sendo um tupla, mesmo que os elementos não estejam delimitados por parentesis.
As tuplas são declaradas de maneira bastante semelhante as Listas, onde os elementos são separados pelo uso de vírgulas e ambas as estruturas são delimitadas por uma simbologia e esta acaba por definir a estrutura.
No código abaixo, definiremos uma Tupla contendo alguns dias da semana.
>>> dias_da_semana = ("domingo", "segunda", "terça", "quarta", )
>>> dias_da_semana
("domingo", "segunda", "terça", "quarta")
Podemos rapidamente perceber a enorme semelhança entre a definições de Listas e Tuplas.
É possível declarar as Tuplas de maneira implícita e explicita, como temos no código a seguir:
#declaração explicita
>>> t1 = tuple("abc")
>>> t1
('a', 'b', 'c')
#declaração implicita
>>> t2 = ("a", "b", "c")
>>> t2
('a', 'b', 'c')
#declaração implicita igual a declaração anterior
>>> t3 = "a", "b", "c"
>>> t3
('a', 'b', 'c')
No código acima, declaramos inicialmente uma Tupla com uso da notação explicita, isto é, passamos um String como parâmetro na inicialização da estrutura tuple. Em seguida, implementamos 2 códigos que possuem o mesmo resultado, utilizando assim, as 2 notação de tuple implicitadas da linguagem Python.
VEJA TAMBÉM
Tags curso, python
Comentários
comments powered by Disqus