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.
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().
print(x & y) # {2, 3}print(x.intersection(y)) # {2, 3}
Diferença
Para diferença podemos usar -
ou o método difference().
# Relativo a xprint(x - y) # {1}x.difference(y) # {1}# Relativo a yprint(y - x) # {4}y.difference(x) # {4}
Diferença Simétrica
Para diferença simétrica podemos usar ^
ou o método symmetric_difference().
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().
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) # Trueprint(5 in x) # Falseprint(10 not in x) # Trueprint(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étodo | Descriçã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 |