Neste artigo, aprenderemos as principais diferenças entre a lista e as tuplas e como usar essas duas estruturas de dados.
Listas e tuplas armazenam um ou mais objetos ou valores em uma ordem específica. Os objetos armazenados em uma lista ou tupla podem ser de qualquer tipo, incluindo o tipo nothing definido pela palavra-chave None.
Listas e tuplas são semelhantes na maioria dos contextos, mas existem algumas diferenças que iremos encontrar neste artigo.
Diferenças de sintaxe
A sintaxe de lista e tupla é um pouco diferente. As listas são ()
colocadas entre colchetes e as tuplas entre parênteses ()
.
Exemplo 1.1: Criação de lista vs. criação de tupla
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Resultado:
(1,2,3,4) (1,2,3,4)
Acima, definimos uma variável chamada list_num que contém uma lista de números de 1
a 4
. A lista é cercada por colchetes ()
. Além disso, definimos uma variável tup_num; que contém uma tupla de número de 1
a 4
. A tupla está entre parênteses ()
.
Em python temos uma type()
função que dá o tipo de objeto criado.
Exemplo 1.2: Encontre o tipo de estrutura de dados usando a função type ()
type(list_num) type(tup_num)
Resultado:
listar tupla
Lista mutável vs tuplas imutáveis
A lista tem natureza mutável, ou seja, a lista pode ser alterada ou modificada após sua criação de acordo com as necessidades, enquanto a tupla tem natureza imutável, ou seja, a tupla não pode ser alterada ou modificada após sua criação.
Exemplo 2.1: Modificar uma Lista de itens vs. Tupla
list_num(2) = 5 print(list_num) tup_num(2) = 5
Resultado:
(1,2,5,4) Traceback (última chamada mais recente): Arquivo "python", linha 6, em TypeError: objeto 'tupla' não suporta atribuição de item
No código acima, 5
atribuímos a list_num no índice 2
e encontramos 5
no índice 2
na saída. Além disso, 5
atribuímos a tup_num no índice 2
e obtivemos type error
. Não podemos modificar a tupla devido à sua natureza imutável.
Nota: Como a tupla é imutável, elas são fixas em tamanho e a lista varia em tamanho.
Operações Disponíveis
Lists tem mais funções embutidas do que tuplas. Podemos usar a dir((object))
função embutida para obter todas as funções associadas para lista e tupla.
Exemplo 3.1: Lista de diretórios
dir(list_num)
Resultado:
('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute', '__getattribute' __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'limpar' copiar ',' contar ',' estender ',' índice ','inserir ',' pop ',' remover ',' reverter ',' classificar ')
Exemplo 3.2: Diretório Tupla
dir(tup_num)
Resultado:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '___get_get__newgs', ' __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' ____reduzir ',' ____reduce__ , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'contagem', 'índice')
Podemos ver claramente que existem tantas funcionalidades adicionais associadas a uma lista sobre uma tupla. Podemos fazer operações de inserção e pop, removendo e classificando elementos na lista com funções embutidas que não estão disponíveis na tupla.
Comparação de tamanho
A operação de tuplas tem um tamanho menor do que o de lista, o que a torna um pouco mais rápida, mas não muito a ser mencionada, até que você tenha um grande número de elementos.
Exemplo 5.1: Calcular o tamanho da Lista vs. Tupla
a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())
Resultado:
a = 104 b = 120
No código acima, temos tupla a e lista b com os mesmos itens, mas o tamanho da tupla é menor que a lista.
Diferentes casos de uso
À primeira vista, pode parecer que as listas sempre podem substituir as tuplas. Mas tuplas são estruturas de dados extremamente úteis
- Usar uma tupla em vez de uma lista pode dar ao programador e ao intérprete uma dica de que os dados não devem ser alterados.
- As tuplas são comumente usadas como o equivalente a um dicionário sem chaves para armazenar dados. Por exemplo,
(('Swordfish', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
O exemplo acima contém tuplas dentro da lista que contém uma lista de filmes. - Ler dados é mais simples quando tuplas são armazenadas dentro de uma lista. Por exemplo,
((2,4), (5,7), (3,8), (5,9))
é mais fácil de ler do que((2,4), (5,7), (3,8), (5,9))
A tupla também pode ser usada como chave no dicionário devido à sua natureza hashble e imutável, enquanto as listas não são usadas como chave em um dicionário porque a lista não pode ser manipulada __hash__()
e tem natureza mutável.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Pontos-chave a serem lembrados:
- A sintaxe literal das tuplas é mostrada entre parênteses,
()
enquanto a sintaxe literal das listas é mostrada por colchetes()
. - Listas tem comprimento variável, tupla tem comprimento fixo.
- Lista tem natureza mutável, tupla tem natureza imutável.
- A lista tem mais funcionalidade do que a tupla.