Aprenda a estrutura de dados Python Set/Frozenset – Parte 4
Nesta Parte 4 da série Estrutura de dados em Python, discutiremos o que é um conjunto, como ele difere de outras estruturas de dados em python, como criar objetos de conjunto, excluir objetos de conjunto e métodos de objetos de conjunto .
- Um objeto definido é uma coleção não ordenada de objetos hash distintos.
- Definir remove automaticamente itens duplicados do objeto.
- Como os objetos definidos não são ordenados, nenhuma operação de indexação e fatiamento é suportada.
Existem atualmente dois tipos de conjuntos integrados.
- set – Por ser mutável, não possui valor hash e não pode ser usado como chave de dicionário ou como elemento de outro conjunto.
- frozenset – Imutável e hashável – seu conteúdo não pode ser alterado após ser criado; pode, portanto, ser usado como chave de dicionário ou como elemento de outro conjunto.
Construir objeto de conjunto
Crie um conjunto usando o método construtor “set()” ou usando chaves com vírgula separando os elementos “{a,b,c}”.
NOTA: você não pode construir um objeto definido através de colchetes vazios, pois isso criará um objeto de dicionário.
Definir métodos
Use a função “dir()” integrada para listar os métodos e atributos de conjunto disponíveis.
Adicionar elementos ao objeto definido
Como já foi dito, set é um tipo mutável. Você pode adicionar, excluir e atualizar seu objeto definido assim que ele for criado.
Vamos falar sobre dois métodos de conjunto add e update.
- método add(elem) – Este método adiciona um único elemento a um objeto definido.
- método update(*others) – Este método adiciona vários elementos a um objeto definido. Você pode passar objetos mutáveis/imutáveis como argumento no método de atualização.
NOTA: duplicatas serão removidas automaticamente.
Remover/limpar elementos de um objeto definido
Como você viu anteriormente em outro tópico de estrutura de dados (lista, tuplas, dicionário), para set você também pode usar a palavra-chave integrada “del” para excluir o objeto set do namespace (ou seja, Memória).
Abaixo estão os métodos para definir objetos para remover elementos.
- clear() – Limpa todos os elementos deixando o conjunto vazio. Este método clear() está disponível em outras estruturas de dados que fornecem a mesma funcionalidade.
- pop() – Remove elementos arbitrários.
- discard(elem) – Se o item não for encontrado no objeto definido, o método “discard()” não gerará nenhum erro.
- remove(elem) – Igual ao método “discard()”, mas gerará KeyError quando um item não for encontrado.
Definir operações
Set fornece métodos para realizar operações matemáticas como interseção, união, diferença e diferença simétrica. Lembra do “diagrama de Venn” dos seus tempos de colégio?
Veremos os métodos abaixo sobre como as operações matemáticas são realizadas.
- União
- interseção
- intersecção_atualização
- diferença_simétrica
- atualização_de_diferença_simétrica
- diferença
- diferença_atualização
- é disjunto
- ésubconjunto
- issuperset
União, Intersecção, Diferença, Simétrica_Diferença
- union(*other) – Retorna um novo conjunto com elementos do conjunto e todos os outros.
- intersection(*other) – Retorna um novo conjunto com elementos comuns ao conjunto e a todos os outros.
- diferença(*outros) – Retorna um novo conjunto com elementos do conjunto que não estão nos outros.
- symmetric_difference(other) – Retorna um novo conjunto com elementos do conjunto ou de other, mas não de ambos.
Interseção_Atualização
intersection_update(*others) – Atualiza o conjunto, mantendo apenas os elementos encontrados nele e todos os demais.
Atualização de diferença
difference_update(*others) – Atualize o conjunto, mantendo apenas os elementos encontrados nele e todos os outros.
Symmetric_Difference_Update
symmetric_difference_update(other) – Atualize o conjunto, mantendo apenas elementos encontrados em qualquer conjunto, mas não em ambos.
É disjunto, é subconjunto, é superconjunto
- édisjunto(outro) – Retorna Verdadeiro se o conjunto não tiver elementos em comum com outros. Os conjuntos são disjuntos se e somente se sua interseção for o conjunto vazio.
- issubset() – Teste se cada elemento no conjunto está em outro.
- issuperset() – Teste se cada elemento do outro está no conjunto.
Método Copiar()
Você pode criar uma cópia idêntica do objeto definido existente usando o método copy(). Este método também está disponível para outros tipos de estrutura de dados como lista, dicionário, etc.
Exclua o objeto definido do namespace usando uma palavra-chave “del” integrada.
Conjunto Congelado
- O conjunto congelado é do tipo imutável. Uma vez construída, você não poderá adicionar, remover ou atualizar elementos da lista.
- Conjuntos congelados sendo imutáveis são hasháveis, podem ser usados como uma “chave” para dicionários ou elementos para outro objeto de conjunto.
- O conjunto congelado é construído usando a função “frozenset()”.
- Conjunto congelado fornece o mesmo conjunto de métodos em comparação com “set” como union(), interseção, copy(), isdisjoint() etc.
Resumo
Neste artigo você viu o que é set, diferença entre set e conjunto congelado, como criar e acessar os elementos do set, métodos de set etc…