W3docs

Recorrer Sets

Aprende a recorrer sets en Python con bucles for y while, enumerate, break, continue y comprensiones de sets con ejemplos claros.

Los sets de Python son colecciones desordenadas de elementos únicos. Al ser desordenados, no puedes acceder a sus elementos por índice, pero puedes iterar sobre cada elemento con un bucle for, usar bucles while para consumir un set y aplicar operaciones de sets dentro de bucles para resolver problemas comunes con datos.

Esta página explica cómo recorrer sets en Python, incluyendo la iteración determinista con sorted(), enumerate(), el filtrado con break y continue, las comprensiones de sets y casos de uso prácticos.

Crear un Set

Antes de recorrerlo, necesitas un set. Puedes crear uno con llaves {} o con la función integrada set(). Consulta Python Sets para una introducción completa.

Crear un set en 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

Observa que set() aplicado a una lista elimina automáticamente los duplicados. El orden de salida no está garantizado.

Recorrer un Set con un Bucle For

La forma más común de iterar sobre un set es con un bucle for. Python visita cada elemento una vez, pero en un orden arbitrario.

Iterar sobre un set en Python

python— editable, runs on the server

Al ejecutarlo, la salida podría ser:

banana
cherry
apple

El orden puede variar cada vez que se ejecuta el programa. Si necesitas un orden predecible, envuelve el set en sorted().

Iterar en Orden Ascendente

sorted() devuelve una lista normal con los elementos del set en orden ascendente. El set original no se modifica.

Recorrer un set en orden ascendente

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

for fruit in sorted(fruits):
    print(fruit)

Salida:

apple
banana
cherry

Usa sorted(my_set, reverse=True) para iterar en orden descendente.

Usar enumerate() con un Set

enumerate() empareja cada elemento con un contador. Combinado con sorted(), obtienes un índice estable junto a cada elemento.

Enumerar un set en Python

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

for index, fruit in enumerate(sorted(fruits)):
    print(index, fruit)

Salida:

0 apple
1 banana
2 cherry

Esto es útil cuando necesitas numerar elementos en un informe o etiquetarlos en un pipeline de datos.

Recorrer con break y continue

Puedes usar break para detener el bucle antes de tiempo y continue para omitir elementos específicos.

Usar continue para Omitir Elementos

Omitir elementos al recorrer un set

scores = {55, 72, 88, 64}

for score in sorted(scores):
    if score < 60:
        continue       # skip failing scores
    print(score)

Salida:

64
72
88

Usar break para Detener Antes de Tiempo

Detener un bucle antes de tiempo con 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

Salida:

First score at 90 or above: 91

Recorrer un Set con un Bucle While

Un bucle while combinado con pop() te permite procesar y consumir un set elemento a elemento. Usa este patrón cuando quieras vaciar el set a medida que avanzas (por ejemplo, una cola de trabajo).

Usar un bucle while para consumir un 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.')

Salida (el orden puede variar):

Processing: update database
Processing: write report
Processing: send email
All tasks done.

Después del bucle, tasks queda vacío. Si necesitas conservar el set original, trabaja sobre una copia: tasks.copy().

Comprobación de Pertenencia Dentro de un Bucle

Una de las mayores fortalezas de los sets es la comprobación de pertenencia en O(1). Verificar item in my_set es mucho más rápido que item in my_list para colecciones grandes, porque los sets utilizan internamente una tabla hash.

Filtrar una lista usando un set para búsquedas 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')

Salida:

admin: access granted
guest: access denied
editor: access granted
unknown: access denied

Este patrón es habitual para verificaciones de permisos, listas de bloqueo y filtrado de datos.

Eliminar Duplicados de una Lista

Convertir una lista en un set dentro de un bucle es una forma rápida de asegurarte de procesar cada valor único solo una vez.

Eliminar duplicados de una lista usando un 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)

Salida:

1
2
3
4
5

Recorrer Operaciones de Sets

Puedes iterar directamente sobre el resultado de una operación de sets — unión, intersección, diferencia — sin crear una variable intermedia.

Recorrer operaciones de sets en Python

python— editable, runs on the server

Salida:

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

Consulta Join Sets para más información sobre cómo combinar sets y Set Methods para la lista completa de operaciones.

Comprensiones de Sets

Una comprensión de set construye un nuevo set a partir de una expresión en una sola línea. La sintaxis es similar a las comprensiones de listas, pero usa llaves.

Construir un set con una comprensión de set

# Squares of numbers 1 through 5
squares = {x**2 for x in range(1, 6)}
print(sorted(squares))

Salida:

[1, 4, 9, 16, 25]

Puedes añadir una condición para filtrar elementos:

Comprensión de set con 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))

Salida:

[2, 4, 6, 8, 10]

Las comprensiones de sets son más concisas que un bucle for que llama a .add() en el cuerpo, y expresan la intención con claridad. Para equivalentes con listas, consulta List Comprehension.

Puntos Clave

  • Los sets son desordenados — no dependas del orden de iteración. Usa sorted() cuando necesites un orden estable.
  • Los sets contienen elementos únicos — la iteración omite automáticamente los duplicados.
  • Las comprobaciones de pertenencia con in en sets son O(1) — mucho más rápidas que en listas para grandes volúmenes de datos.
  • pop() elimina un elemento arbitrario y es útil para consumir un set en un bucle while.
  • Las comprensiones de sets {expr for item in iterable} son la forma idiomática de construir un set filtrado o transformado en una sola línea.

Temas Relacionados

Práctica

Práctica
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?