Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Teoría de conjuntos Python: Listas

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.

Pero en esta lección vamos a crear nuestras propias funciones para entender la lógica paso a paso.

¿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.

⚠️ Esto es solo para practicar la lógica. Más adelante verás que Python tiene un tipo especial llamado set que lo hace automáticamente.

Intersección

Es encontrar los elementos que están en todas las listas al mismo tiempo. Sirve para encontrar coincidencias en datos, como usuarios que cumplen dos condiciones.

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

Es juntar todos los elementos de varias listas en una sola. Sirve para combinar resultados de varias búsquedas

👉 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)

Son los elementos que están en la primera lista, pero no aparecen en la segunda. Sirve para detectar qué falta o qué es exclusivo de un conjunto

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

Un conjunto también puede no tener ningún elemento. A eso se le llama 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

En este tema usamos nuestras propias funciones para practicar la lógica. Pero en Python real existe el tipo 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 in podemos 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.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY