Pesquisa de site

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.

  1. 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.
  2. 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…