W3docs

Remover Itens de Conjuntos

Aprenda a remover itens de um conjunto Python com discard(), remove(), pop(), clear() e difference_update(), com exemplos e avisos importantes.

Os conjuntos em Python são mutáveis, portanto você pode remover elementos a qualquer momento. A linguagem oferece vários métodos para remoção — cada um com um comportamento diferente quando o elemento está ausente ou quando você deseja remover mais de um item de uma só vez. Escolher o método correto evita bugs e deixa sua intenção clara para quem lê o seu código.

Este capítulo abrange:

  • discard() — remove um elemento, sem erro se estiver ausente
  • remove() — remove um elemento, levanta KeyError se estiver ausente
  • pop() — remove e retorna um elemento arbitrário
  • clear() — remove todos os elementos, deixando um conjunto vazio
  • difference_update() — remove vários elementos em uma única chamada
  • Remoção condicional com um loop e com set comprehensions

Se você é novo em conjuntos, leia Python Sets primeiro. Para adicionar itens a um conjunto, veja Add Set Items.

O Método discard()

discard() remove o elemento especificado do conjunto. Se o elemento não estiver presente, o método não faz nada — nenhuma exceção é levantada. Esta é a opção mais segura quando você não tem certeza se o elemento existe.

Sintaxe

set.discard(element)
  • element — o valor a remover.
  • Valor de retorno: None. O conjunto é modificado no lugar.

Removendo um elemento presente

Descartar um elemento que existe no conjunto

python— editable, runs on the server

Descartar um elemento ausente é seguro

fruits = {'apple', 'banana', 'cherry'}
fruits.discard('mango')   # 'mango' is not in the set
print(fruits)
# {'apple', 'banana', 'cherry'}   — unchanged, no error

Isso torna o discard() ideal em loops onde você não pode ter certeza de que todo elemento que deseja remover está presente.

O Método remove()

remove() também remove um único elemento, mas levanta um KeyError se o elemento não for encontrado. Use-o quando o elemento deve existir — o erro serve como um aviso antecipado de que algo está errado.

Sintaxe

set.remove(element)
  • Valor de retorno: None. O conjunto é modificado no lugar.

Removendo um elemento presente

Remover um elemento de um conjunto Python

python— editable, runs on the server

Tentar remover um elemento ausente levanta KeyError

fruits = {'apple', 'banana', 'cherry'}
fruits.remove('mango')
# KeyError: 'mango'

Se quiser evitar o erro mas ainda usar remove(), proteja a chamada com uma verificação in, ou troque por discard():

element = 'mango'
if element in fruits:
    fruits.remove(element)

discard() vs remove() — Diferenças Principais

discard()remove()
Elemento presenteRemoveRemove
Elemento ausenteNão faz nadaLevanta KeyError
Use quandoA remoção é opcionalO elemento deve existir

O Método pop()

pop() remove um elemento arbitrário do conjunto e o retorna. Como os conjuntos não são ordenados, você não pode prever qual elemento será removido — isso depende do layout interno da tabela hash, não da ordem de inserção.

Sintaxe

removed = set.pop()
  • Valor de retorno: o elemento removido.
  • Levanta KeyError se o conjunto estiver vazio.

Retirar um elemento de um conjunto em Python

python— editable, runs on the server

pop() em um conjunto vazio levanta KeyError

empty = set()
empty.pop()
# KeyError: 'pop from an empty set'

Proteja-se disso com uma simples verificação de comprimento:

if fruits:
    item = fruits.pop()

Quando usar pop()

pop() é útil quando você precisa processar e consumir elementos um de cada vez e não se importa com a ordem — por exemplo, ao esvaziar uma fila de trabalho armazenada como um conjunto.

O Método clear()

clear() remove todos os elementos do conjunto, deixando-o vazio. O próprio objeto do conjunto ainda existe; apenas seu conteúdo é removido.

Sintaxe

set.clear()
  • Valor de retorno: None.

Limpar um conjunto em Python

python— editable, runs on the server

set() é como Python exibe um conjunto vazio. Python não pode usar {} para um conjunto vazio porque essa notação já significa um dicionário vazio.

O Método difference_update()

difference_update() remove cada elemento de um iterável fornecido do conjunto, em uma única chamada. É o equivalente no lugar do operador - (diferença).

Sintaxe

set.difference_update(iterable)
  • iterable — um conjunto, lista, tupla ou qualquer outro iterável cujos elementos você deseja remover.
  • Elementos no iterável que não estão no conjunto são silenciosamente ignorados.
  • Valor de retorno: None. O conjunto é modificado no lugar.

Remover vários elementos de uma vez

numbers = {1, 2, 3, 4, 5}
numbers.difference_update({2, 4})
print(numbers)
# {1, 3, 5}

Compare isso com a criação de um novo conjunto com o operador -, que deixa o original inalterado:

numbers = {1, 2, 3, 4, 5}
result = numbers - {2, 4}   # new set, 'numbers' is not modified
print(result)   # {1, 3, 5}
print(numbers)  # {1, 2, 3, 4, 5}

Use difference_update() quando quiser mutar o conjunto existente; use - quando precisar de um novo conjunto e quiser preservar o original.

Removendo Vários Itens com um Loop

Quando os elementos a remover não são conhecidos antecipadamente, colete-os primeiro e depois chame discard() em um loop. Não modifique um conjunto enquanto itera sobre ele — isso levanta um RuntimeError.

Padrão correto — colete os candidatos primeiro, depois remova

fruits = {'apple', 'banana', 'cherry', 'avocado'}

# Step 1: collect elements to remove (do NOT modify the set here)
to_remove = [item for item in fruits if item.startswith('a')]

# Step 2: remove them
for item in to_remove:
    fruits.discard(item)

print(fruits)
# {'banana', 'cherry'}

Filtrando com uma Set Comprehension

Se você quiser manter apenas os elementos que atendem a uma condição, uma set comprehension produz um novo conjunto e deixa o original intacto:

Manter apenas números pares

nums = {1, 2, 3, 4, 5, 6}
evens = {x for x in nums if x % 2 == 0}
print(evens)
# {2, 4, 6}

Isso é preferível quando você precisa preservar o conjunto original ou atribuir o resultado a uma nova variável. Para conjuntos grandes, também é ligeiramente mais legível do que mutar no lugar.

Veja Loop Sets para mais padrões de iteração sobre conjuntos.

Referência Rápida de Métodos

MétodoRemoveElemento ausenteRetorna
discard(x)Elemento xIgnoradoNone
remove(x)Elemento xKeyErrorNone
pop()Elemento arbitrárioKeyError (se vazio)Elemento removido
clear()Todos os elementosn/aNone
difference_update(it)Todos os elementos em itIgnoradoNone

Para uma referência completa de todos os métodos de conjunto, veja Set Methods. Para aprender a iterar sobre um conjunto, veja Loop Sets.

Prática

Prática
Which of the following methods can be used to remove items from a set in Python?
Which of the following methods can be used to remove items from a set in Python?
Was this page helpful?