W3docs

Métodos de Set em Python – Referência Completa com Exemplos

Guia completo dos métodos de set em Python: union, intersection, difference, update, add, remove, discard, copy, isdisjoint e mais, com exemplos.

Os sets em Python são coleções não ordenadas de elementos únicos e hasháveis. Como os sets implementam o conceito matemático de conjunto, eles vêm com uma rica coleção de métodos embutidos para combinar, comparar e modificá-los. Este capítulo cobre todos os métodos embutidos de set com exemplos claros, saída esperada e orientação sobre quando escolher um método em vez de outro.

Se você é novo em sets, leia Python Sets primeiro para entender como os sets são criados e por que eles diferem de listas e tuplas.

Criando sets

Use chaves {} ou o construtor set() para criar um set. O construtor também aceita qualquer iterável — uma lista, tupla ou string — e remove automaticamente os duplicados.

fruits = {'apple', 'banana', 'cherry'}
colors = set(['red', 'green', 'blue'])   # from a list
vowels = set('aeiou')                    # from a string → {'a', 'e', 'i', 'o', 'u'}

empty = set()   # NOT {} — that creates an empty dict

Os sets são não ordenados: a ordem impressa dos elementos pode diferir entre execuções e versões do Python.

Métodos de operação de set

Esses métodos combinam ou comparam dois ou mais sets sem modificar os originais.

union()

union(*others) retorna um novo set contendo todos os elementos que aparecem no set atual ou em qualquer um dos others.

python— editable, runs on the server

O operador | é o atalho equivalente para dois sets: A | B.

Quando usar: mesclar várias coleções enquanto remove duplicatas em uma única etapa.

intersection()

intersection(*others) retorna um novo set contendo apenas os elementos que aparecem no set atual e em todos os others.

python— editable, runs on the server

O operador & é o atalho para dois sets: A & B.

Quando usar: encontrar elementos em comum — por exemplo, usuários que clicaram tanto no anúncio A quanto no anúncio B.

difference()

difference(*others) retorna um novo set de elementos que estão no set atual mas não em nenhum dos others.

python— editable, runs on the server

O operador - é o atalho: A - B.

Quando usar: filtrar um grupo de outro — por exemplo, encontrar produtos que estão em estoque mas ainda não foram enviados.

symmetric_difference()

symmetric_difference(other) retorna um novo set de elementos que aparecem em exatamente um dos dois sets — os elementos que não são compartilhados.

python— editable, runs on the server

O operador ^ é o atalho: A ^ B.

Quando usar: detectar o que mudou entre dois instantâneos — por exemplo, arquivos adicionados ou excluídos entre duas listagens de diretório.

issubset()

issubset(other) retorna True se todos os elementos do set atual também estiverem em other.

python— editable, runs on the server

O operador <= é equivalente; use < para testar um subconjunto próprio (A é menor que B e totalmente contido).

issuperset()

issuperset(other) retorna True se o set atual contiver todos os elementos de other.

A = {1, 2, 3, 4, 5}
B = {2, 3}

print(A.issuperset(B))   # True
print(B.issuperset(A))   # False

O operador >= é equivalente; use > para testar um superconjunto próprio.

isdisjoint()

isdisjoint(other) retorna True se os dois sets não tiverem elementos em comum — a interseção deles é vazia.

A = {1, 2, 3}
B = {4, 5, 6}
C = {3, 4, 5}

print(A.isdisjoint(B))   # True  — no overlap
print(A.isdisjoint(C))   # False — 3 is in both

Quando usar: validar categorias sem sobreposição, verificar que dois conjuntos de permissões são mutuamente exclusivos.

Métodos de atualização no lugar

Esses métodos modificam o set no lugar e retornam None — eles não criam um novo set.

update()

update(*others) adiciona todos os elementos de um ou mais iteráveis ao set atual, ignorando duplicatas.

python— editable, runs on the server

update() aceita qualquer iterável, não apenas outro set — uma lista, tupla ou string também funciona. O operador |= é o atalho para dois sets.

intersection_update()

intersection_update(*others) mantém apenas os elementos que também estão em todos os others, descartando todo o resto.

A = {1, 2, 3, 4}
B = {2, 3, 4, 5}

A.intersection_update(B)
print(A)   # {2, 3, 4}

O operador &= é o atalho.

difference_update()

difference_update(*others) remove do set atual todos os elementos que aparecem em qualquer um dos others.

A = {1, 2, 3, 4}
B = {3, 4, 5}

A.difference_update(B)
print(A)   # {1, 2}

O operador -= é o atalho.

symmetric_difference_update()

symmetric_difference_update(other) mantém apenas os elementos que aparecem em exatamente um dos dois sets, atualizando no lugar.

A = {1, 2, 3}
B = {2, 3, 4}

A.symmetric_difference_update(B)
print(A)   # {1, 4}

O operador ^= é o atalho.

Métodos de manipulação de elementos

add()

add(elem) insere elem no set. Se elem já estiver presente, o set permanece inalterado.

python— editable, runs on the server

Consulte Adicionando Itens ao Set para mais formas de popular um set.

remove()

remove(elem) remove elem do set. Lança KeyError se elem não estiver presente.

python— editable, runs on the server

Use remove() quando o elemento deve estar no set e uma ausência inesperada é um erro de programação que vale a pena expor.

discard()

discard(elem) remove elem do set. Não lança um erro se elem estiver ausente.

python— editable, runs on the server

Use discard() quando o elemento pode ou não estar no set e você apenas quer que ele seja removido.

pop()

pop() remove e retorna um elemento arbitrário. Como os sets são não ordenados, você não pode prever qual elemento será removido. Lança KeyError se o set estiver vazio.

python— editable, runs on the server

Consulte Removendo Itens do Set para uma comparação de todas as abordagens de remoção.

clear()

clear() remove todos os elementos, deixando um set vazio.

python— editable, runs on the server

Observe que print(set()) exibe set(), e não {}, para distinguir um set vazio de um dicionário vazio.

copy()

copy() retorna uma cópia superficial do set. Modificar a cópia não afeta o original.

A = {1, 2, 3}
B = A.copy()

B.add(4)
print(A)   # {1, 2, 3}  — unchanged
print(B)   # {1, 2, 3, 4}

Isso é importante porque uma atribuição simples (B = A) cria uma segunda referência ao mesmo set — alterações em B também afetariam A.

Método vs. operador: qual preferir?

A maioria das operações de set tem uma forma de método e uma forma de operador:

OperaçãoMétodoOperador
UniãoA.union(B)A | B
InterseçãoA.intersection(B)A & B
DiferençaA.difference(B)A - B
Diferença simétricaA.symmetric_difference(B)A ^ B
União no lugarA.update(B)A |= B
Interseção no lugarA.intersection_update(B)A &= B
Diferença no lugarA.difference_update(B)A -= B
Dif. simétrica no lugarA.symmetric_difference_update(B)A ^= B
SubconjuntoA.issubset(B)A <= B
SuperconjuntoA.issuperset(B)A >= B

Diferença fundamental: os métodos aceitam qualquer iterável como argumento, enquanto os operadores exigem que ambos os lados sejam sets. Use métodos quando quiser operar diretamente em uma lista ou tupla sem convertê-la primeiro:

tags = {'python', 'web'}
new_tags = ['python', 'ml', 'data']

tags.update(new_tags)         # works — list is fine
# tags |= new_tags            # TypeError — operator needs a set
print(tags)   # {'python', 'web', 'ml', 'data'}

Referência completa dos métodos de set

MétodoDescrição
add(elem)Adiciona elem ao set; sem efeito se já estiver presente.
clear()Remove todos os elementos, deixando um set vazio.
copy()Retorna uma cópia superficial do set.
difference(*others)Retorna um novo set com elementos que não estão em nenhum dos others.
difference_update(*others)Remove do set todos os elementos encontrados em others.
discard(elem)Remove elem se presente; sem erro se ausente.
intersection(*others)Retorna um novo set de elementos comuns ao set e a todos os others.
intersection_update(*others)Mantém apenas os elementos encontrados no set e em todos os others.
isdisjoint(other)Retorna True se o set e other não compartilharem nenhum elemento.
issubset(other)Retorna True se todos os elementos do set estiverem em other.
issuperset(other)Retorna True se o set contiver todos os elementos de other.
pop()Remove e retorna um elemento arbitrário; lança KeyError se vazio.
remove(elem)Remove elem; lança KeyError se não estiver presente.
symmetric_difference(other)Retorna elementos que estão em exatamente um dos dois sets.
symmetric_difference_update(other)Atualiza o set para a diferença simétrica no lugar.
union(*others)Retorna um novo set com todos os elementos do set e de todos os others.
update(*others)Adiciona todos os elementos de others ao set.

Prática

Prática
Which of the following are methods that can be used on sets in Python?
Which of the following are methods that can be used on sets in Python?
Was this page helpful?