Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Sets o Conjuntos
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Definición de Set
Un set es una colección no ordenada de
elementos únicos e inmutables (aunque el
set en sí es mutable, es decir, se puede
modificar agregando o eliminando
elementos).
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Características de los Sets
• Colección no ordenada: Los elementos de un set no tienen un orden
definido. A diferencia de las listas o las tuplas, no podemos acceder a
los elementos de un set usando índices.
• Elementos únicos: Un set no permite elementos duplicados. Si
intentamos agregar un elemento que ya existe, no se añadirá.
• Elementos inmutables: Los elementos de un set deben ser de un
tipo de dato inmutable, como números, strings o tuplas. No podemos
usar tipos mutables como listas o diccionarios dentro de un set.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Características de los Sets
• Mutable (el set en sí): Aunque los elementos deben ser inmutables,
el propio set es mutable. Podemos agregar add() o eliminar remove()
o discard() elementos después de que el set haya sido creado.
• No se permiten duplicados: Los sets eliminan automáticamente los
elementos duplicados. Esto los hace útiles para filtrar valores
repetidos de una lista u otra estructura de datos.
• Soporte para operaciones de conjuntos: Los sets permiten realizar
operaciones como unión, intersección, diferencia y diferencia
simétrica, que son comunes en la teoría de conjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Características de los Sets
• Mutable (el set en sí): Aunque los elementos deben ser inmutables,
el propio set es mutable. Podemos agregar add() o eliminar remove()
o discard() elementos después de que el set haya sido creado.
• No se permiten duplicados: Los sets eliminan automáticamente los
elementos duplicados. Esto los hace útiles para filtrar valores
repetidos de una lista u otra estructura de datos.
• Soporte para operaciones de conjuntos: Los sets permiten realizar
operaciones como unión, intersección, diferencia y diferencia
simétrica, que son comunes en la teoría de conjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Características de los Sets
• No admite indexación: Debido a que los sets no están ordenados, no
es posible acceder a un elemento por su índice.
• Iterables: Los sets son iterables, por lo que podemos recorrer sus
elementos con bucles. El orden en el que se recorren los elementos
puede no coincidir con el orden en que fueron agregados.
• Altamente eficiente para búsqueda: Los sets están optimizados
para realizar búsquedas rápidas de elementos. Verificar si un
elemento está en un set (x in set) es más rápido que en una lista, ya
que los sets utilizan un hash interno para localizar los elementos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Sintaxis de los Sets
Sintácticamente, podemos crear un set de diferentes maneras.
1. Creación de un set usando llaves { }
2. Creación de un set usando la función set()
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Crear un set vacío
Cuando quieres crear un set vacío, es importante usar la función set() en
lugar de { }, ya que este último crea un diccionario vacío.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Sets con tipos de datos mixtos
Un set puede contener diferentes tipos de datos como números, strings,
y booleanos, siempre y cuando los elementos sean inmutables. Esto
significa que no puedes incluir tipos como listas o diccionarios, ya que
son mutables.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Operaciones con Sets
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Acceso a elementos
Cuando intentamos acceder a un elemento de un conjunto (set) en
Python utilizando un índice obtendremos un error.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Slicing o rebanado
Cuando intentamos realizar slicing en un conjunto (set) en Python
obtendremos un error.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Repetición de Sets
Los conjuntos en Python NO admiten la operación de repeticion (*).
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Concatenación de Sets
Los conjuntos en Python NO admiten la operación de concatenación (+).
Pero como veremos mas adelante podemos unir de otra forma dos o
mas conjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Comparación de Sets
En Python, los conjuntos (sets) no tienen un orden específico y, por lo
tanto, no se pueden comparar de la misma manera que los números o
cadenas de texto. Por ejemplo, la comparación > entre conjuntos no se
basa en el contenido en términos de magnitud de sus elementos, sino
en la inclusión de subconjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Comparación de Sets
La expresión conjunto_letras_1 > conjunto_letras_2 evalúa si
conjunto_letras_1 es un superconjunto propio de conjunto_letras_2.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
¿Se pueden asignar elementos?
NO se puede asignar un valor a un elemento en un conjunto porque los
conjuntos (set) son estructuras no ordenadas y no indexadas.
A diferencia de las listas o las tuplas, los conjuntos no almacenan
elementos en una posición específica, lo que significa que no tienen
índices.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Iteración de Sets
Podemos iterar sobre los elementos de una sets con un bucle for. Para
un bucle while primero debemos transformarlo a una lista para poder
acceder a cada elemento mediante [ ].
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Iteración de Sets – enumerate()
Podemos usar enumerate() para iterar sobre una set.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Iteración de Tuplas – zip()
Podemos usar la función zip() con tuplas. La función zip() toma
múltiples iterables y las combina en pares de elementos según su
posición. Crea un iterable de tuplas donde cada tupla contiene los
elementos correspondientes de los iterables que pasas.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Iteración de sets – zip()
Podemos utilizar zip() en los
set. Al no tener un orden,
cuando utilizamos zip() los
elementos se emparejarán
sin garantizar el orden que
ves al crear el set.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Métodos de los Sets
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Un método de un set en Python es una función específica que permite
realizar operaciones sobre sets, como agregar o eliminar elementos, y
también realizar operaciones matemáticas como la unión, la
intersección, y la diferencia.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
add()
Este método se utiliza para agregar un elemento a un set. Si el
elemento ya está presente en el set, no se agrega de nuevo, ya que los
sets no permiten elementos duplicados.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
clear()
Este método se utiliza para eliminar todos los elementos de un set,
dejándolo vacío pero aún existente. Es útil cuando quieres resetear un
set sin eliminarlo.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
copy()
Se utiliza para crear una copia superficial de un set. Esto es útil cuando
quieres duplicar un set pero mantener el original intacto y separado del
duplicado. Básicamente, cualquier cambio realizado en el set copiado
no afectará al set original.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
pop()
Se utiliza para eliminar y devolver un elemento aleatorio del set. Es
importante notar que debido a la naturaleza desordenada de los sets,
no se puede predecir qué elemento será removido.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
remove()
Se utiliza para eliminar un elemento específico de un set. Si el elemento
no se encuentra en el set, se lanza un error KeyError. Es útil cuando
sabes exactamente qué elemento quieres eliminar y estás seguro de
que está en el set.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
discard()
Se utiliza para eliminar un elemento específico de un set, pero a
diferencia de remove(), no lanza un error si el elemento no está
presente. Es útil cuando quieres asegurarte de que un elemento se
elimine sin preocuparte de si ya está en el set o no.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
update()
Se utiliza para agregar elementos de otro set o de cualquier colección
iterable al set actual. Básicamente, extiende el set con nuevos
elementos, evitando duplicados.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Métodos de los Sets
Teoría de los Conjuntos
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
isdisjoint()
Se utiliza para determinar si dos
sets no tienen ningún elemento en
común. Devuelve True si los sets
son disjuntos (es decir, no
comparten elementos) y False de lo
contrario. Es útil para comprobar
rápidamente si dos conjuntos son
completamente distintos entre sí.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
issubset()
Se utiliza para verificar si todos los
elementos de un set están
contenidos en otro set. Devuelve
True si el set del que se llama es un
subconjunto del set pasado como
argumento, y False de lo contrario.
Es útil cuando necesitas comprobar
relaciones de inclusión entre sets.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
issuperset()
Se utiliza para verificar si todos los elementos de otro set están
contenidos en el set del que se llama. Devuelve True si el set del que se
llama es un superconjunto del set pasado como argumento, y False de
lo contrario. Es útil para comprobar si un set incluye completamente a
otro set.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
union()
Se utiliza para combinar elementos de dos o más sets y devolver un
nuevo set con todos los elementos únicos. Es muy útil para fusionar
varios conjuntos sin duplicar elementos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
difference()
Se utiliza para encontrar la diferencia entre dos o más sets. Devuelve un
nuevo set que contiene los elementos que están en el set original pero
no en los otros sets especificados. Es útil cuando quieres identificar
elementos únicos de un conjunto que no están presentes en otros.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
difference_update()
Se utiliza para eliminar todos los elementos del set actual que también
están presentes en otro set o colección iterable. A diferencia de
difference(), que devuelve un nuevo set, difference_update() modifica el
set original directamente.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
intersection()
Se utiliza para encontrar la intersección de dos o más sets, es decir, los
elementos que son comunes a todos los sets involucrados. Devuelve un
nuevo set con estos elementos comunes. Es útil cuando quieres
identificar elementos compartidos entre conjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
intersection_update()
Se utiliza para actualizar el set llamador, manteniendo solo los
elementos que están presentes en todos los sets proporcionados como
argumento.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
symmetric_difference()
Se utiliza para obtener los elementos que están en uno u otro set, pero
no en ambos. Devuelve un nuevo set con estos elementos únicos de
cada conjunto que no son compartidos. Es útil cuando quieres
identificar las diferencias exclusivas entre dos conjuntos.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
symmetric_difference_update()
Realiza la misma función que symmetric_difference, pero modifica el
set original directamente.
Programación I
Zotti Enzo Martín – Valls Fernando
Sets o Conjuntos
Principales utilidades de los Set
• Filtrado de elementos duplicados.
• Control de permisos y roles de usuarios.
• Eliminación de palabras repetidas en textos.
• Comparación de conjuntos de datos.
• Gestión de etiquetas (tags).
• Detección de relaciones comunes en redes sociales.
• Control de duplicados en bases de datos.
• Filtrar palabras de una lista de "stop words" en un análisis de texto.
• Prevención de envío de emails duplicados.
• Entre otras…