Set python: Otimizando a manipulação de dados

set python

O set no Python é uma estrutura de dados muito útil para manipular conjuntos de valores exclusivos e sem ordem. Isso significa que os elementos não podem ser duplicados e a ordem não é importante. Portanto, set são úteis para garantir a integridade dos dados, evitar conflitos de replicação de dados e otimizar o desempenho em algumas operações.

Set em Python podem ser criados usando a função set() quando se trabalha com lists ou tuplas. Eles podem ser manipulados por meio de métodos como union, intersection, diferença, conjuntos vazios, e outros. Além disso, Python também suporta set comprehensions, que permitem criar sets de forma mais concisa e fácil.

Os sets em Python possuem uma estrutura de dados muito eficiente, pois não possuem elementos duplicados e permitem operações de busca, inserção e exclusão de forma rápida. Dessa forma, isso torna os sets uma escolha ideal para muitas situações onde a velocidade e a eficiência são importantes.

Neste artigo, vamos explorar os sets em Python. Assim, aprendendo sobre sets, incluindo o que são, como eles são representados e como eles podem ser usados para manter a integridade dos dados. Em seguida, vamos discutir a diferença entre sets e listas e como eles podem ser manipulados em Python.

Sintaxe da função set ()

Em Python, a sintaxe do set é baseada em um conjunto de valores sem ordem ou repetições. Você pode criar um conjunto usando colchetes, e adicionar elementos usando o método add(). Remover elementos usando o método remove(), e verificar se um elemento está presente usando o método in. Além disso, você pode obter a cardinalidade (número de elementos) de um conjunto usando o método len().

Exemplos:

  • Criando um conjunto vazio:
my_set = set()
print(my_set)
# Resultado: set()
  • Criando um conjunto com vários elementos:
my_set = set([1, 2, 3, 4, 5])
print(my_set)
# Resultado: {1, 2, 3, 4, 5}
  • Adicionando um elemento a um conjunto:
my_set = set([1, 2, 3, 4, 5])
my_set.add(6)
print(my_set)
# Resultado: {1, 2, 3, 4, 5, 6}
  • Removendo um elemento de um conjunto:
my_set = set([1, 2, 3, 4, 5])
my_set.remove(3)
print(my_set)
# Resultado: {1, 2, 4, 5}
  • Verificando se um elemento está presente em um conjunto:
my_set = set([1, 2, 3, 4, 5])
print(3 in my_set)
# Resultado: False
print(5 in my_set)
# Resultado: True
  • Obter a cardinalidade de um conjunto:
my_set = set([1, 2, 3, 4, 5])
print(len(my_set))
# Resultado: 5

Métodos e operadores utilizados com o set em python

Em Python, os conjuntos (ou “sets” em inglês) são uma forma de armazenar coleções de valores únicos. Eles são úteis para realizar operações como uniões, interseções e diferenças, além de permitir a verificação de pertença e a remoção de elementos.

Aqui estão alguns métodos e operadores que podem ser usados com conjuntos em Python:

Métodos :

  • add(): adiciona um elemento ao conjunto.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # Output: {1, 2, 3, 4}
  • remove(): remove um elemento do conjunto.
my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)  # Output: {1, 2}
  • discard(): remove e retorna um elemento do conjunto.
my_set = {1, 2, 3}
my_set.discard(2)
print(my_set)  # Output: {1, 3}
  • clear(): remove todos os elementos do conjunto.
my_set = {1, 2, 3}
my_set.clear()
print(my_set)  # Output: set()
  • pop(): remove e retorna o último elemento adicionado ao conjunto (se houver).
my_set = {1, 2, 3}
my_set.add(4)
my_set.pop()
print(my_set)  # Output: {1, 3}
  • update(): atualiza o conjunto com elementos de outro conjunto.
my_set = {1, 2, 3}
my_set.update({4, 5, 6})
print(my_set)  # Output: {1, 2, 3, 4, 5, 6}
  • union(): retorna um novo conjunto contendo todos os elementos de ambos os conjuntos.

set1 = {1, 2, 3}
set2 = {4, 5, 6}
union_set = set1.union(set2)
print(union_set) # Output: {1, 2, 3, 4, 5, 6}

  • intersection(): retorna um novo conjunto contendo todos os elementos comuns aos dois conjuntos.
set1 = {1, 2, 3}
set2 = {4, 5, 6}
intersection_set = set1.intersection(set2)
print(intersection_set)  # Output: {4, 5}
  • difference(): retorna um novo conjunto contendo todos os elementos de um conjunto, mas não do outro.

set1 = {1, 2, 3}
set2 = {4, 5, 6}
difference_set = set1.difference(set2)
print(difference_set) # Output: {1, 2}

  • isdisjoint(): retorna True se os conjuntos não tiverem nenhum elemento em comum.
set1 = {1, 2, 3}
set2 = {4, 5, 6}
if set1.isdisjoint(set2):
    print("Os conjuntos não possuem nenhum elemento em comum.")
else:
    print("Os conjuntos possuem elementos em comum.")

Operadores

  • + (união): retorna um novo conjunto contendo todos os elementos de ambos os conjuntos.
  • & (intersecção): retorna um novo conjunto contendo todos os elementos comuns aos dois conjuntos.
  • | (diferença): retorna um novo conjunto contendo todos os elementos de um conjunto, mas não do outro.
  • - (remoção de elementos comuns): retorna um novo conjunto contendo todos os elementos de um conjunto, exceto aqueles presentes no outro conjunto.
  • ^ (exclusão de elementos comuns): retorna um novo conjunto contendo todos os elementos de ambos os conjuntos, exceto aqueles presentes em ambos.
  • in (verificação de pertença).

Diferença entre sets e listas

Em Python, sets e listas são estruturas de dados diferentes que possuem diferentes características e propósitos. Nesse tópicos vamos aprender como os sets são diferentes de listas em python, em termos de estrutura, manipulação de dados e desempenho.

Estrutura:

Sets e listas são estruturas de dados distintas em Python. Um conjunto é uma coleção de elementos uniques, enquanto uma lista é uma coleção de elementos ordenados.

Exemplo:

my_list = [1, 2, 3, 4, 5]
my_set = {1, 2, 3, 4, 5}

Em outras palavras, um conjunto não permite elementos duplicados, enquanto uma lista pode conter elementos duplicados.

Manipulação de dados:

Os conjuntos são mais adequados para operações de união, interseção e diferença, já que essas operações são mais efetivas em conjuntos do que em listas. Além disso, conjuntos são mais eficientes em termos de espaço de memória, pois eles não armazenam elementos duplicados, enquanto listas podem armazenar muitos elementos duplicados.

Exemplo:

# Adicionando um elemento na posição 2 na lista
my_list.append(6)
# Removendo um elemento na posição 3 na lista
my_list.pop(3)

# Adicionando um elemento no conjunto
my_set.add(6)
# Removendo um elemento do conjunto
my_set.remove(3)

Em termos de manipulação de dados, conjuntos são mais adequados para operações de verificação de pertença, remoção de elementos e testes de igualdade. Por outro lado, listas são mais adequadas para operações de acesso a elementos por índice, adição e remoção de elementos e criação de sublistas.

Desempenho:

Em termos de desempenho, conjuntos são mais rápidos do que listas em operações como união, interseção e diferença. Isso ocorre porque essas operações envolvem comparações e manipulações de referências de elementos em vez de copias de dados. Além disso, conjuntos são mais eficientes em termos de espaço de memória, pois eles não armazenam elementos duplicados, enquanto listas podem armazenar muitos elementos duplicados.

Exemplo:

# Intersecão entre duas listas
lista1 = [1, 2, 3, 4, 5]
lista2 = [3, 4, 5, 6, 7]
resultado = lista1.intersection(lista2)
print(resultado)
# Resultado: [3, 4, 5]

# Intersecção entre duas sets
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
resultado = set1.intersection(set2)
print(resultado)
# Resultado: {3, 4, 5}

Em resumo, conjuntos e listas são estruturas de dados diferentes em Python, com diferentes características e propósitos. Conjuntos são mais adequados para operações de união, interseção e diferença, enquanto listas são mais adequadas para operações de acesso a elementos por índice, adição e remoção de elementos e criação de sublistas. Em termos de desempenho, conjuntos são mais rápidos do que listas em operações como união, interseção e diferença, e são mais eficientes em termos de espaço de memória.

Como usar dicionários e Set em python para otimizar a manipulação de dados

Usar conjuntos e dicionários juntos pode otimizar a manipulação de dados em Python, pois cada estrutura de dados oferece recursos úteis para diferentes tarefas. Conjuntos são úteis para armazenar coleções de elementos únicos e sem ordem, enquanto dicionários são úteis para armazenar pares chave-valor, onde cada chave é exclusiva.

Um exemplo comum de como usar conjuntos e dicionários juntos é na implementação de funções de busca em listas. Em vez de criar uma lista de elementos exclusivos, que pode ser caro em termos de memória, podemos usar um conjunto para armazenar os elementos únicos e um dicionário para armazenar informações adicionais sobre cada elemento, como suas posições na lista original.

Exemplo:

Por exemplo, podemos implementar uma função de busca em uma lista de números inteiros usando conjuntos e dicionários da seguinte maneira:

def search_in_list(lst, target):
    unique_elements = set(lst)
    index_dict = {}
    for element in unique_elements:
        if element == target:
            return index_dict
        index_dict[element] = len(index_dict)
    return None

Neste exemplo, a função search_in_list() recebe uma lista de números inteiros e um número inteiro target a ser procurado. Dessa forma, primeiro criamos um conjunto unique_elements a partir da lista lst, armazenando somente os elementos únicos e sem ordem. Em seguida, criamos um dicionário index_dict, onde cada chave é um elemento da lista e o valor é o índice do elemento na lista original.

Cada elemento na lista é procurado no conjunto unique_elements e, se encontrado, seu índice é retornado. Se o elemento target não for encontrado na lista, a função retorna None.

No exemplo, conjuntos são usados para armazenar elementos únicos e dicionários são usados para armazenar informações adicionais sobre cada elemento, como suas posições na lista original. Dessa forma, conseguimos implementar uma função de busca em uma lista de forma eficiente e sem gastar muito em termos de memória.

Além disso, conjuntos também podem ser usados para implementar algoritmos de ordenação, como o QuickSort, onde os elementos são divididos em conjuntos ordenados e, em seguida, combinados para criar uma ordem crescente ou decrescente.

Em resumo, a combinação de conjuntos e dicionários pode ajudar a otimizar a manipulação de dados em Python, oferecendo uma maneira eficiente e flexível de armazenar e manipular coleções de dados.

Usando set em estruturas de dados no python

Em Python, sets são uma estrutura de dados que permite armazenar um conjunto de elementos de forma imutável. Eles são úteis quando precisamos armazenar valores que devem ser exclusivos e não temos necessidade de ordem.

Para estruturas de dados, é preciso definir as operações e métodos necessários para o problema específico que pretendem resolver. Por exemplo, para usar um heap, é preciso definir o método de ordenação e o método de busca. Assim, para usar uma árvore, é preciso definir o método de busca e o método de ordenação. Para usar um gráfico, é preciso definir o método de busca e o método de conectividade. A seguir vamos ter cada caso e exemplos.

Heaps com o set

Heaps são estruturas de dados hierárquicas que permitem realizar operações de ordenação e busca mais rapidamente do que outras estruturas de dados. Em Python, podemos usar heaps para resolver problemas de ordenação e busca, como o problema do maior número de um conjunto de números.

Aqui está um exemplo de como criar um heap em Python usando sets. Nele criamos um set com os valores 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Em seguida, criamos um loop que adiciona o último elemento do set ao próprio set, criando um heap. Por fim, imprimimos os elementos no topo do heap, que são os valores mais altos. Veja:

my_set = set([5, 3, 7, 1, 4, 6, 2, 8, 9, 10])

# criar um heap baseado no valor do último elemento
while len(my_set) > 1:
    my_set.add(my_set.pop())

# imprimir o topo do heap
print("Os elementos no topo do heap:", sorted(list(my_set)))

Árvores com o set

Árvores são estruturas de dados que permitem realizar operações de busca e ordenação rapidamente. Em Python, podemos usar árvores para resolver problemas de busca e ordenação, como o problema do maior número de um conjunto de números.

Aqui está um exemplo de como criar uma árvore em Python usando set. No exemplo, criamos um set com os valores 1, 2, 3, 4, 5, 6, 7. Em seguida, criamos o nó raiz com o valor 5. Depois, criamos os nós filhos do nó raiz com os valores 2, 3 e 6. Em seguida, criamos um nó filho do nó raiz com o valor 7 e outro nó filho do nó raiz com o valor 8. Por fim, imprimimos a árvore, que é uma estrutura de dados representada por um conjunto de elementos. Veja:

my_set = set([1, 2, 3, 4, 5, 6, 7])

# criar o nó raiz
root = 5

# criar os nós filhos do nó raiz
my_set.add(2)
my_set.add(3)
my_set.add(6)

# criar um nó filho do nó raiz
my_set.add(7)

# criar outro nó filho do nó raiz
my_set.add(8)

# criar outro nó filho do nó raiz
my_set.add(9)

# imprimir a árvore
print("A árvore:", sorted(list(my_set)))

Gráficos com o set

Gráficos são estruturas de dados que permitem representar relacionamentos entre elementos. Em Python, podemos usar gráficos para resolver problemas de conectividade e busca, como o problema do caminho mais curto entre dois pontos em um gráfico.

Aqui está um exemplo de como criar um gráfico simples em Python usando sets. No exemplo, criamos um set com os valores 1, 2, 3, 4, 5. Em seguida, criamos um nó com o valor 1 e adicionamos dois nós filhos a ele. Em seguida, criamos mais três nós filhos e adicionamos um nó filho a eles. Por fim, imprimimos o gráfico, que é uma estrutura de dados representada por um conjunto de elementos. Veja a baixo:

my_set = set([1, 2, 3, 4, 5])

# criar um nó
node1 = 1

# adicionar um nó filho ao nó
node2 = 2
my_set.add(node2)
my_set.add(node1)

# criar outro nó filho
node3 = 3
my_set.add(node3)
my_set.add(node1)

# criar outro nó filho
node4 = 4
my_set.add(node4)
my_set.add(node1)

# criar outro nó filho
node5 = 5
my_set.add(node5)
my_set.add(node1)

# imprimir o gráfico
print("O gráfico:", sorted(list(my_set)))

Conclusão

Em conclusão, os conjuntos em Python são uma estrutura de dados útil para armazenar coleções de elementos unicos e sem ordem. Eles podem ser criados usando parênteses, o método set (), ou a classe set. Além disso, os conjuntos possuem vários métodos para manipulação de elementos, como adição, remoção, interseção e união. Esses métodos permitem que os conjuntos sejam usados de forma eficiente e flexível em diversos cenários, como análise de dados, programação de algoritmos e resolução de problemas. Além disso, os conjuntos em Python são imutáveis, o que garante a segurança dos dados armazenados e evita problemas de race condition. Por isso, os conjuntos em Python são uma ferramenta poderosa para qualquer programador que trabalha com coleções de dados.

Este artigo foi útil?

Obrigado pela resposta!
Picture of Schênia T

Schênia T

Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estatística pela UFPB. Seu hobby é maratonar séries, curtir uma boa música trabalhando ou cozinhando, ir ao cinema e aprender coisas novas!

Contato: schenia.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!