Como manipular um conjunto em Python
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.
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.
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)
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>
clear()Remove todos os itens, mas a variável continua existindo.
1frutas = {"maçã", "banana", "laranja"} 2 3frutas.clear() 4print(frutas) 5
delApaga 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
len()Retorna a quantidade de itens do conjunto.
1frutas = {"maçã", "banana", "laranja"} 2print(len(frutas)) 3 4# Saída:
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)
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:
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
frozensete outro conjunto, o resultado será um novofrozenset, preservando a característica da imutabilidade e protegendo os seus elementos.
frozenset vs. Conjuntos set vs. Tuplas vs. ListasAntes de avançar, vale recapitular as diferenças entre tuplas e listas, e resumir como os dois tipos de conjuntos diferem delas:
| Característica | Listas | Tuplas | Conjuntos (set) | Conjuntos (frozenset) |
|---|---|---|---|---|
| Mutabilidade | Mutáveis. | Imutáveis. | Mutáveis. | Imutáveis. |
| Ordem | Mantêm a ordem dos itens. | Mantêm a ordem dos itens. | Não têm ordem fixa. | Não têm ordem fixa. |
| Valores duplicados | Permitidos. | Permitidos. | Não permitidos. | Não permitidos. |
| Sintaxe de criação | Colchetes [] ou função list(). | Parênteses () ou função tuple(). | Chaves {} ou função set(). | Criado apenas comfrozenset(). |
| Acesso por índice | Sim (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.