Python

Tuples e Sets em Python: quando usar cada um – Aula 11

Nesta aula do minicurso de Python, quero abordar dois tipos de coleção que são usadas com frequência no dia a dia do desenvolvimento: tuples e sets em Python. Embora pareçam semelhantes a listas à primeira vista, cada um tem suas características específicas que os tornam ideais para situações diferentes.

O que são Tuples?

Uma tuple é uma coleção ordenada e imutável de elementos. Assim como as listas, elas podem conter qualquer tipo de dado: inteiros, strings, objetos, outras coleções… Mas, ao contrário das listas, não podem ser alteradas após sua criação. Isso significa que não dá para adicionar, remover ou mudar elementos de uma tuple depois que ela foi definida.

A sintaxe é simples:

coordenadas = (10.5, 20.3)

Para acessar elementos, o uso é igual ao das listas:

print(coordenadas[0])  # saída: 10.5

Tuples são úteis quando queremos garantir que os dados não sejam modificados. Também são mais performáticas para leitura e ocupam menos memória. Um caso típico onde uso tuple é para representar pares fixos de valores, como coordenadas geográficas, RGB de cores, ou retornos múltiplos de funções:

def dividir(numerador, denominador):
if denominador == 0:
return (None, "Divisão por zero")
return (numerador / denominador, None)

Como são imutáveis, tuples também são seguras para usar como chaves de dicionários:

pontos = {}
pontos[(1, 2)] = "A"
pontos[(3, 4)] = "B"

Isso é útil em cenários como caching ou mapeamento de coordenadas, onde preciso acessar dados com base em pares fixos.

Sets: coleções sem duplicatas

Já os sets em Python são coleções desordenadas e sem elementos duplicados. A estrutura de set é muito parecida com os conjuntos da matemática. E isso me salva quando quero eliminar duplicatas automaticamente de uma lista:

nomes = ["Ana", "Carlos", "Ana", "João"]
nomes_unicos = set(nomes)
print(nomes_unicos) # saída: {'Carlos', 'João', 'Ana'}

É importante lembrar que a ordem dos elementos não é garantida. Se você precisa manter a ordem, talvez sets não sejam a melhor escolha.

Outra coisa que gosto muito nos sets são as operações de conjunto. Python oferece suporte direto para união, interseção e diferença:

backend = {"Python", "C#", "Java"}
frontend = {"JavaScript", "HTML", "CSS", "Python"}

# Linguagens em comum
print(backend & frontend) # saída: {'Python'}

# União dos dois conjuntos
print(backend | frontend)

# Linguagens só do backend
print(backend - frontend)

Essas operações ajudam bastante, por exemplo, quando precisamos comparar permissões entre dois perfis de usuário, descobrir interseções entre listas de recursos ou validar conjuntos exclusivos.

Além disso, sets são extremamente eficientes para verificação de existência. Em vez de percorrer uma lista inteira com in, o set faz isso com complexidade constante (O(1)):

linguagens = {"Python", "C#", "Java", "Go"}

if "Python" in linguagens:
print("Python está presente!")

Para coleções com milhares de elementos, esse ganho de performance é notável.

Quando usar tuples e sets em Python?

Eu costumo seguir estas regras simples para decidir:

  • Uso tuple quando:
    • Os dados têm uma ordem lógica.
    • Preciso garantir que nada será modificado.
    • Quero usar como chave em dicionários, já que tuples são hashable.
    • Preciso de uma estrutura mais leve e rápida que uma lista.
  • Uso set quando:
    • Preciso remover duplicatas automaticamente.
    • Vou fazer operações matemáticas de conjuntos.
    • Quero fazer verificações de existência de forma rápida.
    • Não preciso me preocupar com a ordem dos itens.

Também podemos usar frozenset quando precisamos de um set imutável. É menos comum, mas aparece em casos onde sets são usados como chaves ou valores fixos.

permissoes = frozenset(["ler", "escrever"])

Considerações finais

Entender bem tuples e sets em Python me ajuda a escrever código mais limpo, eficiente e seguro. Ambos fazem parte da base do Python moderno e aparecem o tempo todo, seja em bibliotecas, APIs ou estruturas internas. Quanto mais cedo você dominar esses dois conceitos, melhor preparado estará para resolver problemas reais no mundo do desenvolvimento backend.

Se quiser se aprofundar, recomendo dar uma olhada na documentação oficial de cada um:

Vinicius Sodré

Formado em Ciência da Computação pela Unicarioca, desenvolvedor de software com 15 anos de experiência em grandes empresas nacionais e multinacionais. Vinicius está à frente deste blog, feito de desenvolvedor para desenvolvedores de iniciantes a experientes.

Compartilhar
Publicado por:
Vinicius Sodré

Posts Recentes

Python para IA: Domine o Caminho para a Inteligência Artificial

A inteligência artificial está revolucionando todos os setores da sociedade, desde aplicações empresariais até soluções…

6 dias atrás

Dicionários em Python: Tudo o que você precisa saber – Aula 10

Entre as estruturas de dados mais versáteis do Python, os dicionários se destacam. Eles nos…

1 mês atrás

Listas em Python: tudo que você precisa saber – Aula 9

Nesta nona aula do mini curso, quero falar sobre um dos tipos de dados mais…

1 mês atrás

Escopo de variáveis em Python: Saiba e livre-se de bugs – Aula 8

Entender o escopo de variáveis em Python é essencial para evitar erros e criar programas…

1 mês atrás

Funções no Python: Como Criar e Utilizar eficientemente – Aula 7

As funções são um dos conceitos mais importantes em qualquer linguagem de programação, e no…

1 mês atrás

Loops no Python: Execute código repetidamente – Aula 6

Os loops no Python são um dos conceitos mais fundamentais em qualquer linguagem de programação.…

1 mês atrás

Este blog utiliza cookies. Se você continuar assumiremos que você está satisfeito com ele.

Leia Mais...