En este punto ya sabes bastante sobre listas: cómo crearlas, recorrerlas y modificarlas. Ahora vamos a dar un paso más y mirar cómo trabajar con conjuntos.
👉 No te preocupes: no necesitas ser experto en matemáticas. La idea de conjuntos es muy intuitiva: es simplemente una colección de elementos únicos.
Por ejemplo:
{1, 3, 5}sí es un conjunto (ningún número repetido).[1, 1, 3]no es un conjunto (el 1 aparece dos veces).
Todo eso se puede pensar como conjuntos.
⚠️ En Python existe un tipo especial llamado set que ya hace todo esto.
¿Por qué nos interesa esto?
- En la vida real, los conjuntos aparecen en todas partes:
- Los amigos en común que te muestra Facebook.
- Los clientes que compraron en tu tienda este mes, pero no el anterior.
Operaciones típicas con conjuntos
Para entender mejor cómo funcionan, vamos a crear nuestras propias funciones en Python.
Intersección
Imagina que quieres ver cuáles son los amigos que tienes en común con otra persona en Facebook.
- Tus amigos:
['juan', 'carlos', 'pedro'] - Los amigos de otra persona:
['alejandro', 'pedro', 'sergio', 'juan', 'santiago']
Los amigos en común son ['juan', 'pedro']., porque ellos aparecen en las dos listas.
Cómo lo resolvemos en código
Creamos una función intersection() que recibe varias listas y devuelve los elementos que aparecen en todas.
def intersection(*lists):
# Si no recibimos listas, devolvemos lista vacía
if not lists:
return []
# Empezamos con la primera lista como "base"
common_elements = lists[0]
# Comparamos con cada lista adicional
for current_list in lists[1:]:
new_common = []
for item in common_elements:
# Solo guardamos los elementos que también están en la lista actual
if item in current_list:
new_common.append(item)
# Actualizamos los elementos comunes hasta ahora
common_elements = new_common
return common_elements
friends1 = ['juan', 'carlos', 'pedro']
friends2 = ['alejandro', 'pedro', 'sergio', 'juan', 'santiago']
print(intersection(friends1, friends2))
# Resultado: ['juan', 'pedro']
Unión
👉 La clave: cada elemento aparece una sola vez, aunque esté repetido en varias listas.
Imagina que tú y tu amigo hacen una lista de películas que quieren ver.
- Tu lista:
['Matrix', 'Inception', 'Titanic'] - Su lista:
['Inception', 'Avatar', 'Matrix']
Si unimos ambas listas, queremos todas las películas distintas: ['Matrix', 'Inception', 'Titanic', 'Avatar']
Cómo lo resolvemos en código
Creamos una función union() que recibe varias listas y devuelve una sola lista sin duplicados:
def union(*lists):
# Creamos una lista vacía para almacenar el resultado
result = []
# Recorremos cada lista
for current_list in lists:
for item in current_list:
# Solo agregamos el elemento si no está ya en el resultado
if item not in result:
result.append(item)
return result
movies1 = ['Matrix', 'Inception', 'Titanic']
movies2 = ['Inception', 'Avatar', 'Matrix']
print(union(movies1, movies2))
# Resultado: ['Matrix', 'Inception', 'Titanic', 'Avatar']
Complemento (diferencia)
Piensa en tus tareas de la semana y compáralas con las de tu compañero de trabajo:
- Tus tareas:
['reportes', 'presentación', 'revisión'] - Las tareas de tu compañero:
['presentación', 'diseño']
La diferencia son las tareas que solo haces tú: ['reportes', 'revisión']
Cómo lo resolvemos en código
Creamos una funcióndifference() que devuelve los elementos que están en la primera lista pero no en la segunda:
def difference(base_list, *other_lists):
# Copiamos la lista base (para no modificar el original)
diff_result = base_list[:]
# Recorremos cada lista "contraria"
for current_list in other_lists:
new_diff = []
for item in diff_result:
# Solo guardamos los que NO están en la lista actual
if item not in current_list:
new_diff.append(item)
# Actualizamos el resultado parcial
diff_result = new_diff
return diff_result
tasks1 = ['reportes', 'presentación', 'revisión']
tasks2 = ['presentación', 'diseño']
print(difference(tasks1, tasks2))
# Resultado: ['reportes', 'revisión']
Pertenencia
Además de hacer operaciones entre listas, muchas veces necesitamos saber si un elemento está dentro de una lista. Para eso usamos el operador in.
Imagina que tienes una lista de números prohibidos para una rifa: prohibidos = [4, 13]
Cuando alguien elige un número, quieres verificar si está en esa lista.
# Lista de números prohibidos
prohibidos = [4, 13]
# Número elegido por un jugador
numero = 10
# Verificamos si el número está en la lista
if numero in prohibidos:
print('Ese número está prohibido ❌')
else:
print('Número válido ✅')
💡 Con in puedes comprobar pertenencia en cualquier lista: números, strings, tareas, productos, etc.
Conjunto vacío
Piensa en el conjunto vacío como “una caja sin nada adentro”. Existe, pero no contiene elementos.
vacio = []
print(vacio) # []
En la teoría de conjuntos, el conjunto vacío es muy importante porque aparece cuando no hay coincidencias. Por ejemplo, si buscamos la intersección de dos listas sin elementos comunes:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(intersection(list1, list2))
# Resultado: []
Aquí el resultado es una lista vacía, que representa un conjunto vacío.
Nota práctica
set, que hace todo esto de forma automática:
list1 = [1, 2, 3]
list2 = [4, 3, 6, 1, 5]
print(set(list1) & set(list2)) # intersección -> {1, 3}
print(set(list1) | set(list2)) # unión -> {1, 2, 3, 4, 5, 6}
print(set(list1) - set(list2)) # diferencia -> {2}
👉 Más adelante veremos set en detalle.
Resumen
- Un conjunto es una colección de elementos únicos.
- Intersección: lo que está en todas las listas (sirve para encontrar coincidencias).
- Unión: todos los elementos juntos, sin duplicados (sirve para combinar resultados).
- Diferencia: lo que está en la primera lista pero no en la segunda (sirve para detectar lo exclusivo).
- Con el operador
inpodemos comprobar si un elemento pertenece a una lista. - Más adelante veremos
set, que hace todo esto automáticamente en Python.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.