Conjuntos Python
Python vem equipado com vários tipos de dados integrados para nos ajudar a organizar nossos dados. Essas estruturas incluem listas, dicionários, tuplas e conjuntos (sets).
Da documentação do Python 3 documentação
Um conjunto é uma coleção não ordenada sem elementos duplicados. Usos básicos incluem teste de pertinência e eliminação de entradas duplicadas.
Leia Python Sets: What, Why and How para uma referência mais aprofundada.
Inicializando um conjunto
Existem duas maneiras de criar conjuntos: usando chaves {} e a função integrada set()
Conjuntos Vazios
Ao criar um conjunto, certifique-se de não usar chaves vazias {} ou você obterá um dicionário vazio em vez disso.
# Create set using curly braces or set() function
s = {1, 2, 3} # Using curly braces
s = set([1, 2, 3]) # Using set() constructor
# Warning: empty {} creates a dictionary, not a set
s = {} # this will create a dictionary instead of a set
type(s) # Returns <class 'dict'>
<class 'dict'>
Coleções não ordenadas de elementos únicos
Um conjunto remove automaticamente todos os valores duplicados.
# Sets automatically remove duplicates
s = {1, 2, 3, 2, 3, 4} # Duplicates are removed
s # Returns {1, 2, 3, 4}
{1, 2, 3, 4}
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
E como um tipo de dado não ordenado, eles não podem ser indexados.
s = {1, 2, 3}
s[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
set add e update
Usando o método add() podemos adicionar um único elemento ao conjunto.
# add() method: add a single element to the set
s = {1, 2, 3}
s.add(4) # Add element 4
s
{1, 2, 3, 4}
E com update(), múltiplos:
# update() method: add multiple elements from an iterable
s = {1, 2, 3}
s.update([2, 3, 4, 5, 6]) # Add multiple elements (duplicates ignored)
s
{1, 2, 3, 4, 5, 6}
set remove e discard
Ambos os métodos removerão um elemento do conjunto, mas remove() levantará um key error se o valor não existir.
# remove() method: remove element, raises KeyError if not found
s = {1, 2, 3}
s.remove(3) # Remove element 3
s
{1, 2}
s.remove(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 3
discard() não levantará erros.
# discard() method: remove element, no error if not found
s = {1, 2, 3}
s.discard(3) # Remove element 3 (safe, no error if missing)
s
{1, 2}
s.discard(3)
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
remove() and discard() methods for sets?remove() removes one element, discard() removes allremove() raises an error if element doesn't exist, discard() does notremove() is fasterset union
union() ou | criará um novo conjunto com todos os elementos dos conjuntos fornecidos.
# union(): combine all elements from multiple sets (no duplicates)
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s1.union(s2) # or 's1 | s2' - returns {1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
set intersection
intersection() ou & retornará um conjunto com apenas os elementos que são comuns a todos eles.
# intersection(): return elements common to all sets
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
s1.intersection(s2, s3) # or 's1 & s2 & s3' - returns {3}
{3}
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
intersection() return for sets?set difference
difference() ou - retornará apenas os elementos que são exclusivos do primeiro conjunto (conjunto invocado).
# difference(): return elements in first set but not in others
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.difference(s2) # or 's1 - s2' - returns {1}
{1}
s2.difference(s1) # or 's2 - s1'
{4}
set symmetric_difference
symmetric_difference() ou ^ retornará todos os elementos que não são comuns entre eles.
# symmetric_difference(): return elements in either set, but not both
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.symmetric_difference(s2) # or 's1 ^ s2' - returns {1, 4}
{1, 4}
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
symmetric_difference() return for two sets?