Tuplas y Sets (Conjuntos)
Además de las Listas y Diccionarios (que son las más comunes), Python ofrece otras dos estructuras de datos nativas muy útiles: las Tuplas y los Sets (Conjuntos). Conocerlas te permitirá elegir la herramienta adecuada para el trabajo adecuado.
Tuplas (tuple)
Una tupla es una colección ordenada y A DIFERENCIA DE LAS LISTAS, INMUTABLE. Una vez que se crea una tupla, no puedes cambiar, agregar o eliminar sus elementos.
Se definen utilizando paréntesis ().
# Creando una tupla
coordenadas = (4.5, 9.1)
colores_primarios = ("rojo", "amarillo", "azul")
# Accediendo a elementos (igual que en listas)
print(colores_primarios[0]) # Output: rojo
# Intentando modificar una tupla (ESTO CAUSARÁ UN ERROR)
# coordenadas[0] = 5.0 <-- TypeError: 'tuple' object does not support item assignment
¿Cuándo usar Tuplas en lugar de Listas?
- Para proteger los datos: Si tienes una colección de valores que no deben cambiar bajo ninguna circunstancia a lo largo de tu programa (como días de la semana, constantes matemáticas, configuraciones), usa una tupla.
- Rendimiento: Las tuplas son ligeramente más ligeras y rápidas en memoria que las listas.
- Como claves de diccionario: Dado que son inmutables, las tuplas pueden utilizarse como "claves" en los diccionarios (las listas no).
Sets o Conjuntos (set)
Un Set es una colección desordenada, no indexada y que NO PERMITE ELEMENTOS DUPLICADOS.
Se definen utilizando llaves {}, pero a diferencia de los diccionarios, no tienen estructura de "clave:valor", solo valores sueltos.
# Creando un set
frutas = {"manzana", "banana", "cereza"}
# Agregando elementos
frutas.add("naranja")
# Los sets no permiten duplicados:
numeros = {1, 2, 2, 2, 3, 4, 4}
print(numeros) # Output: {1, 2, 3, 4} (Automáticamente elimina repetidos)
¿Cuándo usar Sets?
- Para eliminar duplicados: La forma más rápida en Python de eliminar valores repetidos de una lista es convertirla a set y luego volverla lista:
nueva_lista = list(set(lista_con_duplicados)). - Para comprobaciones de pertenencia ultra rápidas: Si necesitas revisar constantemente si un elemento existe en una colección gigante
if elemento in coleccion, los Sets son infinitamente más rápidos que las listas. - Operaciones matemáticas de conjuntos: Los sets en Python soportan las operaciones clásicas de teoría de conjuntos como uniones (
|), intersecciones (&) y diferencias (-).
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# Intersección (qué tienen en común)
print(set_a & set_b) # Output: {3}