Iterar sobre Sets
Aprenda a iterar sobre sets em Python com for, while, enumerate, break, continue e compreensões de sets com exemplos claros.
Os sets em Python são coleções não ordenadas de elementos únicos. Por serem não ordenados, não é possível acessar os itens por índice — mas você ainda pode iterar sobre cada elemento com um loop for, usar loops while para consumir um set e aplicar operações de set dentro de loops para resolver problemas comuns de dados.
Esta página aborda como iterar sobre sets em Python, incluindo iteração determinística com sorted(), enumerate(), filtragem com break e continue, compreensões de sets e casos de uso práticos.
Criando um Set
Antes de iterar, você precisa de um set. Você pode criar um com chaves {} ou com a função embutida set(). Consulte Python Sets para uma introdução completa.
Criar um set em Python
# Using curly braces
fruits = {'apple', 'banana', 'cherry'}
# Using set() — useful when converting another sequence
numbers = set([1, 2, 2, 3, 4, 4, 5])
print(numbers) # {1, 2, 3, 4, 5} — duplicates are removedObserve que set() aplicado a uma lista remove automaticamente os duplicados. A ordem de saída não é garantida.
Iterando sobre um Set com um Loop For
A maneira mais comum de iterar sobre um set é um loop for. Python visita cada elemento uma vez, mas em ordem arbitrária.
Iterar sobre um set em Python
Executar isso pode imprimir:
banana
cherry
appleA ordem pode ser diferente cada vez que o programa é executado. Se você precisar de uma ordem previsível, envolva o set em sorted().
Iterando em Ordem Crescente
sorted() retorna uma lista comum contendo os elementos do set em ordem crescente. O set original não é alterado.
Iterar sobre um set em ordem crescente
fruits = {'apple', 'banana', 'cherry'}
for fruit in sorted(fruits):
print(fruit)Saída:
apple
banana
cherryUse sorted(my_set, reverse=True) para iterar em ordem decrescente.
Usando enumerate() com um Set
enumerate() emparelha cada elemento com um contador. Combinado com sorted(), isso fornece um índice estável junto com cada item.
Enumerar um set em Python
fruits = {'apple', 'banana', 'cherry'}
for index, fruit in enumerate(sorted(fruits)):
print(index, fruit)Saída:
0 apple
1 banana
2 cherryIsso é útil quando você precisa numerar itens em um relatório ou rotulá-los em um pipeline de dados.
Iterando com break e continue
Você pode usar break para interromper o loop antecipadamente e continue para pular elementos específicos.
Usando continue para Pular Elementos
Pular elementos ao iterar sobre um set
scores = {55, 72, 88, 64}
for score in sorted(scores):
if score < 60:
continue # skip failing scores
print(score)Saída:
64
72
88Usando break para Parar Antecipadamente
Parar um loop antecipadamente usando break
scores = {55, 72, 88, 91, 64}
for score in sorted(scores):
if score >= 90:
print(f'First score at 90 or above: {score}')
breakSaída:
First score at 90 or above: 91Iterando sobre um Set com um Loop While
Um loop while combinado com pop() permite processar e consumir um set elemento por elemento. Use esse padrão quando quiser esvaziar o set à medida que avança (por exemplo, uma fila de tarefas).
Usar um loop while para consumir um set
tasks = {'send email', 'write report', 'update database'}
while tasks:
task = tasks.pop() # removes and returns an arbitrary element
print(f'Processing: {task}')
print('All tasks done.')Saída (a ordem pode variar):
Processing: update database
Processing: write report
Processing: send email
All tasks done.Após o loop, tasks estará vazio. Se você precisar que o set original permaneça intacto, trabalhe com uma cópia: tasks.copy().
Verificação de Pertencimento Dentro de um Loop
Um dos maiores pontos fortes dos sets é a verificação de pertencimento O(1). Verificar item in my_set é muito mais rápido do que item in my_list para coleções grandes, pois os sets usam uma tabela de hash internamente.
Filtrar uma lista usando um set para buscas rápidas
allowed_roles = {'admin', 'editor', 'viewer'}
users = ['admin', 'guest', 'editor', 'unknown']
for user in users:
if user in allowed_roles:
print(f'{user}: access granted')
else:
print(f'{user}: access denied')Saída:
admin: access granted
guest: access denied
editor: access granted
unknown: access deniedEsse padrão é comum para verificações de permissões, listas de bloqueio e filtragem de dados.
Removendo Duplicatas de uma Lista
Converter uma lista em um set dentro de um loop é uma maneira rápida de garantir que você processe cada valor único apenas uma vez.
Remover duplicatas de uma lista usando um set
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_values = set(my_list) # duplicates removed
for value in sorted(unique_values):
print(value)Saída:
1
2
3
4
5Iterando sobre Operações de Set
Você pode iterar diretamente sobre o resultado de uma operação de set — união, interseção, diferença — sem criar uma variável intermediária.
Iterar sobre operações de set em Python
Saída:
Intersection:
3
4
Difference (set1 - set2):
1
2
Symmetric difference:
1
2
5
6Consulte Join Sets para mais informações sobre como combinar sets e Set Methods para a lista completa de operações.
Compreensões de Sets
Uma compreensão de set constrói um novo set a partir de uma expressão em uma única linha. A sintaxe espelha as compreensões de lista, mas usa chaves.
Construir um set com uma compreensão de set
# Squares of numbers 1 through 5
squares = {x**2 for x in range(1, 6)}
print(sorted(squares))Saída:
[1, 4, 9, 16, 25]Você pode adicionar uma condição para filtrar elementos:
Compreensão de set com filtro
numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
evens = {n for n in numbers if n % 2 == 0}
print(sorted(evens))Saída:
[2, 4, 6, 8, 10]As compreensões de sets são mais concisas do que um loop for que chama .add() no corpo e comunicam a intenção claramente. Para equivalentes com listas, consulte List Comprehension.
Pontos Principais
- Os sets são não ordenados — não confie na ordem de iteração. Use
sorted()quando uma ordem estável for necessária. - Os sets contêm elementos únicos — a iteração pula automaticamente os duplicados.
- As verificações de pertencimento
inem sets são O(1) — muito mais rápidas do que em listas para grandes volumes de dados. pop()remove um elemento arbitrário e é útil para consumir um set em um loopwhile.- As compreensões de sets
{expr for item in iterable}são a forma idiomática de construir um set filtrado ou transformado em uma linha.
Tópicos Relacionados
- Python Sets — criar, adicionar e remover elementos
- Add Set Items — métodos
add()eupdate() - Remove Set Items —
remove(),discard()epop() - Join Sets — união, interseção, diferença e mais
- Set Methods — referência completa de todos os métodos de set
- Python For Loops — o loop
forem profundidade - Loop Lists — iterar sobre listas
- Loop Tuples — iterar sobre tuplas
- Loop Dictionaries — iterar sobre dicionários