Python Iluminado

Sets

Sets são coleções não-ordenadas de itens ÚNICOS, embora um Set possa ser modificado, os elementos contidos dentro do Set devem ser imutáveis. Sets são definidos por valores separados por vírgula dentro de chaves {}.

Importante: Cuidado para não confundir os Sets com os dicionários!

A principal vantagem de usar um Set, ao contrário de uma lista, é que ele possui um mecanismo altamente otimizado para verificar se um elemento específico está contido nele.

Talvez você lembre dos Sets através da famosa teoria matemática dos conjuntos.

img

Os Sets podem ser usados para executarmos operações matemáticas de conjuntos como união, intersecção, diferença simétrica, etc.

Definindo um Set

Para definirmos um Set é muito simples:

s = {1,1,2,3,3,4}
print(type(s)) # <class 'set'>
print(s) # {1, 2, 3, 4}

Observe que os valores repetidos foram eliminados de nosso set.

Também podemos criar um set através do método set():

k = set([1,2,3,4,5])
print(type(k)) # <class 'set'>
print(k) # {1, 2, 3, 4, 5}

Lembrando que podemos iterar sob um set com um for loop:

for itens in k:
print(itens)

Operações com Sets

O método add() nos possibilita adicionar um item ao set:

k.add(8)
print(k) # {1, 2, 3, 4, 5, 8}

O método discard() nos permite remover itens de um set:

k.discard(1)
print(k) # {2, 3, 4, 5, 8}

Para remover todos os elementos do set podemos usar o método clear():

k.clear()
print(k) # set()

Também podemos usar os sets para eliminar letras repetidas de uma palavra:

print(set('cachorro')) # {'o', 'a', 'c', 'r', 'h'}

Para sabermos o número de elementos em um set usamos o método len():

len(set('cachorro')) # 5

Vamos agora definir dois novos sets x e y para testarmos novas operações.

x = {1,2,3}
y = {2,3,4}

Intersecção

Para intersecção podemos usar & ou o método intersection().

img

print(x & y) # {2, 3}
print(x.intersection(y)) # {2, 3}

Diferença

Para diferença podemos usar - ou o método difference().

img

# Relativo a x
print(x - y) # {1}
x.difference(y) # {1}
# Relativo a y
print(y - x) # {4}
y.difference(x) # {4}

Diferença Simétrica

Para diferença simétrica podemos usar ^ ou o método symmetric_difference().

img

print(x.symmetric_difference(y)) # {1, 4}
print(y.symmetric_difference(x)) # {1, 4}
print(x ^ y) # {1, 4}
print(y ^ x) # {1, 4}

Todos imprimem o mesmo resultado, uma vez que a diferença é simétrica.

União

Para união podemos usar | ou o método union().

img

print(x | y) # {1, 2, 3, 4}
print(x.union(y)) # {1, 2, 3, 4}

Verificando a presença de um Elemento

Assim como nas outras estruturas de dados compostas, nos sets também é possível verificarmos a presença ou absência de um determinado elemento com o uso da palavra-chave in, por sinal, os sets são muito eficientes para essas operações.

print(1 in x) # True
print(5 in x) # False
print(10 not in x) # True
print(1 not in x) # False

Referência dos Sets

Os Sets nos trazem diversas funcionalidades e nos permitem resolver diversos problemas, para conhecer mais detalhes sobre eles visite a documentação oficial.

A tabela a seguir apresenta os métodos mais importantes dos sets e suas descrições:

MétodoDescrição
add()Adiciona um elemento ao set
clear()Remove todos os elementos do set
copy()Retorna uma cópia do set
difference()Retorna um set contendo a diferença entre dois ou mais sets
difference_update()Remove os itens desse set que também estão incluídos em outro set especificado
discard()Remove um item específico
intersection()Retorna um set que é intersecção entre dois sets
intersection_update()Remove os itens desse set que não estão presente em outro set especificado
isdisjoint()Retorna se dois sets possuem intersecção ou não
issubset()Retorna se outro set contém esse set ou não
issuperset()Retorna se esse set contém outro set ou não
pop()Remove o item especificado
remove()Remove o item especificado
symmetric_difference()Retorna um set com a diferença simétrica de dois sets
symmetric_difference_update()Insere a diferença simétrica desse set no outro
union()Retorna um set contendo a união de sets
update()Atualiza o set com a união desse set e outros