W3docs

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 removed

Observe 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

python— editable, runs on the server

Executar isso pode imprimir:

banana
cherry
apple

A 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
cherry

Use 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 cherry

Isso é ú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
88

Usando 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}')
        break

Saída:

First score at 90 or above: 91

Iterando 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 denied

Esse 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
5

Iterando 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

python— editable, runs on the server

Saída:

Intersection:
3
4
Difference (set1 - set2):
1
2
Symmetric difference:
1
2
5
6

Consulte 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 in em 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 loop while.
  • 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

Prática

Prática
Which of the following is true about loop sets in Python?
Which of the following is true about loop sets in Python?
Was this page helpful?