- Definição: Coleção não ordenada de itens únicos. Não permite elementos duplicados. São mutáveis.
- Quando usar:
- Para armazenar uma coleção de itens onde a unicidade é importante e a ordem não.
- Para remover duplicatas de uma lista.
- Para realizar operações matemáticas de conjunto (união, interseção, diferença).
- Principais Métodos/Operações:
- Criação:
meu_conjunto = set()
(para conjunto vazio) ou meu_conjunto = {1, 2, 3}
.
meu_conjunto = set([1, 2, 2, 3])
(convertendo de uma lista, removendo duplicatas)
- Adicionar:
add(item)
: Adiciona um item.
- Remover:
remove(item)
: Remove item
. Gera erro se o item não existe.
discard(item)
: Remove item
se ele existe, sem gerar erro se não existir.
pop()
: Remove e retorna um item arbitrário do conjunto.
clear()
: Remove todos os elementos.
- Operações de Conjunto:
union(outro_conjunto)
ou |
: Combina elementos únicos de ambos.
intersection(outro_conjunto)
ou &
: Elementos comuns a ambos.
difference(outro_conjunto)
ou : Elementos no primeiro, mas não no segundo.
symmetric_difference(outro_conjunto)
ou ^
: Elementos que estão em um OU outro, mas não em ambos.
issubset(outro_conjunto)
: Verifica se o conjunto é um subconjunto.
issuperset(outro_conjunto)
: Verifica se o conjunto é um superconjunto.
isdisjoint(outro_conjunto)
: Retorna True
se os dois conjuntos não têm nenhum elemento em comum.
carrinho_a = {"maçã", "banana", "laranja"}
carrinho_b = {"banana", "uva", "morango"}
print(f"Carrinho A: {carrinho_a}") # Saída: {'banana', 'laranja', 'maçã'} (ordem pode variar)
print(f"Carrinho B: {carrinho_b}") # Saída: {'uva', 'morango', 'banana'} (ordem pode variar)
# Adicionar um item
carrinho_a.add("abacaxi")
print(f"Carrinho A após adicionar abacaxi: {carrinho_a}")
# Exemplo Saída: {'banana', 'laranja', 'maçã', 'abacaxi'} (ordem não garantida)
# Tentar adicionar um duplicado (não acontece nada, pois conjuntos são únicos)
carrinho_a.add("maçã")
print(f"Carrinho A após tentar adicionar maçã: {carrinho_a}")
# Exemplo Saída: {'banana', 'laranja', 'maçã', 'abacaxi'} (sem alteração visível)
# União
todos_itens = carrinho_a.union(carrinho_b)
# Ou: todos_itens = carrinho_a | carrinho_b
print(f"União (todos os itens únicos): {todos_itens}")
# Exemplo Saída: {'maçã', 'banana', 'laranja', 'uva', 'morango', 'abacaxi'}
# Interseção
itens_comuns = carrinho_a.intersection(carrinho_b)
# Ou: itens_comuns = carrinho_a & carrinho_b
print(f"Interseção (itens em comum): {itens_comuns}")
# Exemplo Saída: {'banana'}
# Diferença
itens_somente_a = carrinho_a.difference(carrinho_b)
# Ou: itens_somente_a = carrinho_a - carrinho_b
print(f"Itens apenas em A: {itens_somente_a}")
# Exemplo Saída: {'laranja', 'maçã', 'abacaxi'}
# Diferença Simétrica
itens_exclusivos = carrinho_a.symmetric_difference(carrinho_b)
# Ou: itens_exclusivos = carrinho_a ^ carrinho_b
print(f"Diferença Simétrica (exclusivos de A ou B): {itens_exclusivos}")
# Exemplo Saída: {'laranja', 'maçã', 'uva', 'morango', 'abacaxi'}
# Subconjunto
conjunto_pequeno = {"maçã", "laranja"}
print(f"Conjunto pequeno é subconjunto de Carrinho A? {conjunto_pequeno.issubset(carrinho_a)}")
# Saída: True
# Superconjunto
print(f"Carrinho A é superconjunto de Conjunto pequeno? {carrinho_a.issuperset(conjunto_pequeno)}")
# Saída: True
# Disjunto (não tem elementos em comum)
conjunto_c = {"morango", "pera"}
conjunto_d = {"uva", "melancia"}
print(f"Conjunto C e D são disjuntos? {conjunto_c.isdisjoint(conjunto_d)}")
# Saída: True
print(f"Carrinho A e B são disjuntos? {carrinho_a.isdisjoint(carrinho_b)}")
# Saída: False (por causa da 'banana')