Lista Python vs. Tuplas (com exemplos)

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 1a 4. A lista é cercada por colchetes (). Além disso, definimos uma variável tup_num; que contém uma tupla de número de 1a 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, 5atribuímos a list_num no índice 2e encontramos 5no índice 2na saída. Além disso, 5atribuímos a tup_num no índice 2e 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

  1. 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.
  2. 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.
  3. 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:

  1. A sintaxe literal das tuplas é mostrada entre parênteses, ()enquanto a sintaxe literal das listas é mostrada por colchetes ().
  2. Listas tem comprimento variável, tupla tem comprimento fixo.
  3. Lista tem natureza mutável, tupla tem natureza imutável.
  4. A lista tem mais funcionalidade do que a tupla.

Artigos interessantes...