Learning Hub Logo

Sobre Diego Pinho

Professor especialista em tecnologia com mais de 10 anos de experiência. Autor de livros técnicos e criador de cursos que já impactaram milhares de estudantes.

Visite meu site principal →

Serviços

  • Área do Aluno
  • Consultoria Personalizada
  • Cursos Completos
  • Trabalhe Conosco

Redes Sociais

  • Youtube
  • TikTok
  • Instagram
  • LinkedIn

Links

  • Nosso Blog
  • Learning Hub
  • Cursos Online
  • Livros Publicados

Professor Diego Pinho

Educação, Tecnologia e IA © 2026

Python›Manipulando conjuntos

Manipulando conjuntos

Como manipular um conjunto em Python

📖3 min de leitura

Nesta lição, vamos aprender como realizar algumas ações, como adicionar e remover itens dos nossos conjuntos. Também vamos conhecer uma outra versão deles, o frozenset.

Alterando valores

Como conjuntos não têm índices e não mantêm ordem, não é possível alterar diretamente um valor específico dentro deles através de operações como fazíamos com listas e tuplas:

1lista = ["item1", "item2"] 2conjunto = {"item1", "item 2"} 3 4print(lista[0]) 5print(conjunto[0]) 6 7# Saída: 8# item1 9# Traceback (most recent call last): 10# File "<stdin>", line 1, in <module> 11# print(conjunto[0]) 12# ~~~~~~~~^^^ 13# TypeError: 'set' object is not subscriptable

Sempre que falamos em "alterar" um conjunto, estamos na verdade falando sobre adicionar um novo item ou remover um item existente e não sobre mudar um de seus elementos.

Adicionando itens

Conjuntos são mutáveis, então é possível acrescentar novos valores depois que eles são criados.

add()

Adiciona um único valor ao conjunto.

1frutas = {"maçã", "banana"} 2 3frutas.add("laranja") 4print(frutas) 5

Se o valor já existir no conjunto, nada muda, já que os conjuntos não aceitam duplicados.

update()

Adiciona vários valores de uma vez ao conjunto. Ele pode receber uma coleção, como o outro conjunto ou uma lista, por exemplo.

1frutas = {"maçã", "banana"} 2 3citricas = {"laranja", "limão"} 4frutas.update(citricas)

Removendo itens

Cada método de remoção tem um comportamento diferente, principalmente quando o item que queremos remover não existe.

remove()

Remove o item se ele existir. Senão, um erro é gerado.

1frutas = {"maçã", "banana", "laranja"} 2frutas.remove("banana") 3 4print(frutas)

discard()

Remove o item se existir e o ignora se ele não existir:

1frutas = {"maçã", "banana", "laranja"} 2 3frutas.discard("uva") # não gera erro 4frutas.discard(

pop()

Remove um item aleatório e o retorna.

1frutas = {"maçã", "banana", "laranja"} 2removida = frutas.pop() 3 4print(removida)

Como conjuntos não têm ordem, não há como saber qual item será removido. Mas caso não haja elementos no conjunto, um erro é gerado:

1frutas = {} 2frutas.pop() 3 4# Saída: 5# Traceback (most recent call last): 6# File "<stdin>", line 1, in <module>

Limpando o conjunto

clear()

Remove todos os itens, mas a variável continua existindo.

1frutas = {"maçã", "banana", "laranja"} 2 3frutas.clear() 4print(frutas) 5

del

Apaga a variável e seus elementos, removendo o conjunto por inteiro da memória. Após usar o del, frutas deixa de existir completamente:

1frutas = {"maçã", "banana"} 2del frutas 3 4print(frutas) 5 6

Extraindo informações do conjunto

len()

Retorna a quantidade de itens do conjunto.

1frutas = {"maçã", "banana", "laranja"} 2print(len(frutas)) 3 4# Saída:

Copiando conjuntos

copy()

Cria uma cópia de um conjunto. Modificações no conjunto copiado não afetam o conjunto original.

1original = {1, 2, 3} 2 3copia = original.copy() 4print(copia)

Frozenset

O frozenset é a versão imutável de um conjunto. Ele funciona quase igual ao set, mas com uma diferença essencial: depois de criado, você não pode mais mudá-lo.

Isso significa que você não pode adicionar, remover ou alterar valores dentro dele. É como se fosse um conjunto "congelado", como seu nome diz.

Mesmo sendo imutável, ele mantém todas as características de um conjunto comum:

  • não tem ordem;
  • não aceita valores repetidos;
  • permite realizar operações com seus elementos, exceto as que os alteram.

Observe:

1frutas = frozenset({"maçã", "banana", "laranja"}) 2 3print(frutas) 4print(

Como o frozenset não muda, ele se torna útil em situações onde você precisa garantir que aquele conjunto não será modificado ao longo do programa.

Atenção: Sempre que você fizer uma operação entre um frozenset e outro conjunto, o resultado será um novo frozenset, preservando a característica da imutabilidade e protegendo os seus elementos.

Conjuntos frozenset vs. Conjuntos set vs. Tuplas vs. Listas

Antes de avançar, vale recapitular as diferenças entre tuplas e listas, e resumir como os dois tipos de conjuntos diferem delas:

CaracterísticaListasTuplasConjuntos (set)Conjuntos (frozenset)
MutabilidadeMutáveis.Imutáveis.Mutáveis.Imutáveis.
OrdemMantêm a ordem dos itens.Mantêm a ordem dos itens.Não têm ordem fixa.Não têm ordem fixa.
Valores duplicadosPermitidos.Permitidos.Não permitidos.Não permitidos.
Sintaxe de criaçãoColchetes [] ou função list().Parênteses () ou função tuple().Chaves {} ou função set().Criado apenas comfrozenset().
Acesso por índiceSim (lista[0]).Sim (tupla[0]).Não possuem índices.Não possuem índices.

Na próxima lição, vamos aprender a comparar conjuntos usando operações da matemática, como união e interseção. Elas são ferramentas essenciais para analisar coleções de dados.

← AnteriorIterabilidade e imutabilidade em conjuntosPróximo →Operações entre conjuntos
6# Saída possível:
7# {'banana', 'laranja', 'maçã'}
5
6print(frutas)
7
8vermelhas = ["morango", "cereja"]
9frutas.update(vermelhas)
10
11print(frutas)
12
13# Saída possível:
14# {'banana', 'maçã', 'limão', 'laranja'}
15# {'banana', 'maçã', 'limão', 'laranja', 'morango', 'cereja'}
5
6frutas.remove("melão") # "melão" não existe em frutas, gera erro
7
8# Saída possível:
9# {'laranja', 'maçã'}
10# Traceback (most recent call last):
11# File "<stdin>", line 1, in <module>
12# frutas.remove("melão")
13# ~~~~~~~~~~~~~^^^^^^^^^
14# KeyError: 'melão'
"banana"
)
5
6print(frutas)
7
8# Saída possível:
9# {'maçã', 'laranja'}
5print(frutas)
6
7# Saída possível:
8# banana
9# {'maçã', 'laranja'}
7# frutas.pop()
8# ~~~~~~~~~~^^
9# TypeError: pop expected at least 1 argument, got 0
6# Saída:
7# set() # ou seja, o conjunto está vazio
# Saída:
7# Traceback (most recent call last):
8# File "<stdin>", line 1, in <module>
9# print(frutas)
10# ^^^^^^
11# NameError: name 'frutas' is not defined
5
# 3
5
6# Saída possível:
7# {1, 2, 3}
type
(
frutas
)
)
5print(len(frutas))
6
7# Saída possível:
8# frozenset({'banana', 'laranja', 'maçã'})
9# <class 'frozenset'>
10# 3