Tuplas en Python
Tuplas en Python - Guía Completa
Las tuplas son una de las estructuras de datos fundamentales en Python. Te explico todo sobre ellas:
¿Qué es una tupla?
Una tupla es una colección ordenada e inmutable de elementos.
# Sintaxis básica
mi_tupla = (1, 2, 3, 4, 5)
tupla_vacia = ()
tupla_un_elemento = (1,) # ¡Importante la coma!Características principales
1. Inmutabilidad
mi_tupla = (1, 2, 3)
# mi_tupla[0] = 10 # ¡ERROR! No se puede modificar2. Puede contener diferentes tipos de datos
tupla_mixta = (1, "hola", 3.14, True, [1, 2, 3])3. Permite elementos duplicados
tupla_duplicados = (1, 2, 2, 3, 3, 3)Creación de tuplas
Diferentes formas de crear tuplas:
# Con paréntesis
tupla1 = (1, 2, 3)
# Sin paréntesis (tupla por empaquetado)
tupla2 = 1, 2, 3
# Usando la función tuple()
tupla3 = tuple([1, 2, 3])
tupla4 = tuple("abc") # ('a', 'b', 'c')
# Tupla de un solo elemento
tupla_unica = (1,) # Correcto
no_tupla = (1) # ¡Esto es un entero!Acceso a elementos
Por índice:
mi_tupla = ('a', 'b', 'c', 'd', 'e')
print(mi_tupla[0]) # 'a' - Primer elemento
print(mi_tupla[2]) # 'c' - Tercer elemento
print(mi_tupla[-1]) # 'e' - Último elemento
print(mi_tupla[-2]) # 'd' - Penúltimo elementoSlicing (rebanado):
mi_tupla = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(mi_tupla[2:5]) # (2, 3, 4)
print(mi_tupla[:3]) # (0, 1, 2)
print(mi_tupla[6:]) # (6, 7, 8, 9)
print(mi_tupla[::2]) # (0, 2, 4, 6, 8) - Paso de 2
print(mi_tupla[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) - InvertidaOperaciones con tuplas
Concatenación:
tupla1 = (1, 2, 3)
tupla2 = (4, 5, 6)
resultado = tupla1 + tupla2 # (1, 2, 3, 4, 5, 6)Repetición:
tupla = ('a', 'b')
repetida = tupla * 3 # ('a', 'b', 'a', 'b', 'a', 'b')Verificación de existencia:
mi_tupla = (1, 2, 3, 4, 5)
print(3 in mi_tupla) # True
print(10 in mi_tupla) # FalseMétodos disponibles
Las tuplas tienen pocos métodos debido a su inmutabilidad:
1. count() - Cuenta ocurrencias
mi_tupla = (1, 2, 2, 3, 2, 4, 2)
print(mi_tupla.count(2)) # 4
print(mi_tupla.count(5)) # 02. index() - Encuentra posición
mi_tupla = ('a', 'b', 'c', 'b', 'd')
print(mi_tupla.index('b')) # 1 - primera ocurrencia
print(mi_tupla.index('b', 2)) # 3 - buscando desde posición 2Desempaquetado de tuplas
Desempaquetado básico:
coordenadas = (10, 20)
x, y = coordenadas
print(f"x: {x}, y: {y}") # x: 10, y: 20Desempaquetado con * (Python 3+):
mi_tupla = (1, 2, 3, 4, 5)
primero, *medio, ultimo = mi_tupla
print(primero) # 1
print(medio) # [2, 3, 4]
print(ultimo) # 5Intercambio de variables:
a = 5
b = 10
a, b = b, a # Intercambio elegante usando tuplas
print(f"a: {a}, b: {b}") # a: 10, b: 5Iteración sobre tuplas
mi_tupla = ('manzana', 'banana', 'naranja')
# Con for loop
for fruta in mi_tupla:
print(fruta)
# Con enumerate
for indice, fruta in enumerate(mi_tupla):
print(f"Índice {indice}: {fruta}")Tuplas vs Listas
| Característica | Tupla | Lista |
|---|---|---|
| Mutabilidad | ❌ Inmutable | ✅ Mutable |
| Sintaxis | (1, 2, 3) | [1, 2, 3] |
| Rendimiento | ⚡ Más rápido | 🐌 Más lento |
| Uso memoria | ✅ Menos memoria | ❌ Más memoria |
| Métodos | Pocos | Muchos |
Casos de uso comunes
1. Retornar múltiples valores de funciones
def operaciones(a, b):
suma = a + b
resta = a - b
return suma, resta # Retorna una tupla
resultado = operaciones(10, 5)
print(resultado) # (15, 5)2. Claves en diccionarios (por ser inmutables)
coordenadas = {
(40.7128, -74.0060): "Nueva York",
(51.5074, -0.1278): "Londres"
}
print(coordenadas[(40.7128, -74.0060)]) # Nueva York3. Datos que no deben cambiar
# Configuraciones constantes
CONFIGURACION = ("localhost", 8080, True)4. Secuencias de elementos heterogéneos
# Cada posición tiene un significado específico
persona = ("Juan", 30, "Ingeniero")
nombre, edad, profesion = personaFunciones útiles con tuplas
mi_tupla = (5, 2, 8, 1, 9)
print(len(mi_tupla)) # 5 - Longitud
print(max(mi_tupla)) # 9 - Valor máximo
print(min(mi_tupla)) # 1 - Valor mínimo
print(sum(mi_tupla)) # 25 - Suma de elementos
# Conversiones
lista = list(mi_tupla) # Tupla a lista
tupla_nueva = tuple(lista) # Lista a tuplaEjemplos prácticos
Ejemplo 1: Coordenadas GPS
def calcular_distancia(punto1, punto2):
x1, y1 = punto1
x2, y2 = punto2
return ((x2 - x1)**2 + (y2 - y1)**2)**0.5
punto_a = (3, 4)
punto_b = (0, 0)
distancia = calcular_distancia(punto_a, punto_b)
print(f"Distancia: {distancia}") # Distancia: 5.0Ejemplo 2: Sistema de estudiantes
# Cada tupla representa: (nombre, edad, calificación)
estudiantes = [
("Ana", 20, 8.5),
("Carlos", 22, 7.8),
("María", 21, 9.2)
]
# Promedio de calificaciones
calificaciones = [estudiante[2] for estudiante in estudiantes]
promedio = sum(calificaciones) / len(calificaciones)
print(f"Promedio: {promedio:.2f}")Ventajas de las tuplas
✅ Más eficientes en memoria y velocidad que las listas
✅ Inmutables - más seguras para datos constantes
✅ Pueden ser claves en diccionarios
✅ Mejor semántica para agrupar datos relacionados
Resumen
Las tuplas son esenciales en Python porque:
Son inmutables y eficientes
Permiten desempaquetado elegante
Son ideales para retornar múltiples valores
Pueden usarse como claves en diccionarios
Comentarios
Publicar un comentario