# Conjuntos (Sets) em Python Um **Conjunto (Set)** em Python é uma coleção não ordenada de itens únicos. Isso significa que um conjunto não pode conter elementos duplicados e a ordem em que os elementos são armazenados não é garantida. ## Definição de Conjuntos Conjuntos são definidos usando chaves `{}` ou a função `set()`. **Exemplo de definição:** ```python # Definindo um conjunto usando chaves Frutas = {"Maçã", "Banana", "Cereja"} print(Frutas) # Definindo um conjunto vazio (é importante usar set() para conjuntos vazios, pois {} cria um dicionário vazio) ConjuntoVazio = set() print(ConjuntoVazio) ``` ## Características Principais * **Não Ordenado:** Os elementos em um conjunto não possuem uma ordem específica. * **Único:** Cada elemento em um conjunto deve ser único. Tentativas de adicionar elementos duplicados são ignoradas. * **Mutável:** É possível adicionar ou remover elementos de um conjunto após sua criação. * **Elementos Imutáveis:** Os elementos dentro de um conjunto devem ser de tipos imutáveis (como strings, números, tuplas). ## Operações Comuns com Conjuntos ### Adicionar Elementos Você pode adicionar um único elemento a um conjunto usando o método `add()`. ```python Frutas = {"Maçã", "Banana", "Cereja"} Frutas.add("Laranja") print(Frutas) # Saída possível: {'Cereja', 'Laranja', 'Maçã', 'Banana'} (a ordem pode variar) ``` Para adicionar múltiplos elementos de um iterável (como outra lista ou conjunto), use o método `update()`. ```python Frutas = {"Maçã", "Banana"} Novas_Frutas = ["Laranja", "Uva"] Frutas.update(Novas_Frutas) print(Frutas) # Saída possível: {'Uva', 'Banana', 'Laranja', 'Maçã'} ``` ### Remover Elementos Você pode remover um elemento específico usando `remove()` ou `discard()`. A diferença é que `remove()` gera um erro se o elemento não existir, enquanto `discard()` não faz nada nesse caso. ```python Frutas = {"Maçã", "Banana", "Cereja"} # Usando remove() Frutas.remove("Banana") print(Frutas) # Saída possível: {'Cereja', 'Maçã'} # Usando discard() Frutas.discard("Uva") # Não gera erro, pois "Uva" não está no conjunto print(Frutas) # Saída possível: {'Cereja', 'Maçã'} # Tentando remover um elemento inexistente com remove() geraria um KeyError # Frutas.remove("Pera") # Isso causaria um erro ``` Para remover e retornar um elemento arbitrário do conjunto, use `pop()`. ```python Frutas = {"Maçã", "Banana", "Cereja"} elemento_removido = Frutas.pop() print(f"Elemento removido: {elemento_removido}") print(f"Conjunto restante: {Frutas}") # Saída possível: # Elemento removido: Cereja # Conjunto restante: {'Maçã', 'Banana'} ``` Para remover todos os elementos de um conjunto, use `clear()`. ```python Frutas = {"Maçã", "Banana", "Cereja"} Frutas.clear() print(Frutas) # Saída: set() ``` ### Operações Matemáticas de Conjuntos Conjuntos suportam operações matemáticas como união, interseção, diferença e diferença simétrica. * **União (`|` ou `union()`):** Retorna um novo conjunto com todos os elementos de ambos os conjuntos. * **Interseção (`&` ou `intersection()`):** Retorna um novo conjunto com os elementos comuns a ambos os conjuntos. * **Diferença (`-` ou `difference()`):** Retorna um novo conjunto com os elementos do primeiro conjunto que não estão no segundo. * **Diferença Simétrica (`^` ou `symmetric_difference()`):** Retorna um novo conjunto com os elementos que estão em um dos conjuntos, mas não em ambos. ```python A = {1, 2, 3, 4} B = {3, 4, 5, 6} # União print(A | B) # Saída: {1, 2, 3, 4, 5, 6} print(A.union(B)) # Saída: {1, 2, 3, 4, 5, 6} # Interseção print(A & B) # Saída: {3, 4} print(A.intersection(B)) # Saída: {3, 4} # Diferença print(A - B) # Saída: {1, 2} (Elementos em A que não estão em B) print(A.difference(B)) # Saída: {1, 2} print(B - A) # Saída: {5, 6} (Elementos em B que não estão em A) print(B.difference(A)) # Saída: {5, 6} # Diferença Simétrica print(A ^ B) # Saída: {1, 2, 5, 6} print(A.symmetric_difference(B)) # Saída: {1, 2, 5, 6} ``` ## Quando Usar Conjuntos? Conjuntos são ideais quando você precisa: * Garantir que uma coleção de itens não tenha duplicatas. * Realizar verificações de pertinência (se um item está ou não em uma coleção) de forma muito eficiente. * Executar operações matemáticas de conjuntos (união, interseção, etc.). --- **:: Referência::** [Documentação Python sobre tipos nativos](https://docs.python.org/3/library/stdtypes.html)