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.

python
# Sintaxis básica
mi_tupla = (1, 2, 3, 4, 5)
tupla_vacia = ()
tupla_un_elemento = (1,)  # ¡Importante la coma!

Características principales

1. Inmutabilidad

python
mi_tupla = (1, 2, 3)
# mi_tupla[0] = 10  # ¡ERROR! No se puede modificar

2. Puede contener diferentes tipos de datos

python
tupla_mixta = (1, "hola", 3.14, True, [1, 2, 3])

3. Permite elementos duplicados

python
tupla_duplicados = (1, 2, 2, 3, 3, 3)

Creación de tuplas

Diferentes formas de crear tuplas:

python
# 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:

python
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 elemento

Slicing (rebanado):

python
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) - Invertida

Operaciones con tuplas

Concatenación:

python
tupla1 = (1, 2, 3)
tupla2 = (4, 5, 6)
resultado = tupla1 + tupla2  # (1, 2, 3, 4, 5, 6)

Repetición:

python
tupla = ('a', 'b')
repetida = tupla * 3  # ('a', 'b', 'a', 'b', 'a', 'b')

Verificación de existencia:

python
mi_tupla = (1, 2, 3, 4, 5)
print(3 in mi_tupla)    # True
print(10 in mi_tupla)   # False

Métodos disponibles

Las tuplas tienen pocos métodos debido a su inmutabilidad:

1. count() - Cuenta ocurrencias

python
mi_tupla = (1, 2, 2, 3, 2, 4, 2)
print(mi_tupla.count(2))  # 4
print(mi_tupla.count(5))  # 0

2. index() - Encuentra posición

python
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 2

Desempaquetado de tuplas

Desempaquetado básico:

python
coordenadas = (10, 20)
x, y = coordenadas
print(f"x: {x}, y: {y}")  # x: 10, y: 20

Desempaquetado con * (Python 3+):

python
mi_tupla = (1, 2, 3, 4, 5)
primero, *medio, ultimo = mi_tupla
print(primero)  # 1
print(medio)    # [2, 3, 4]
print(ultimo)   # 5

Intercambio de variables:

python
a = 5
b = 10
a, b = b, a  # Intercambio elegante usando tuplas
print(f"a: {a}, b: {b}")  # a: 10, b: 5

Iteración sobre tuplas

python
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ísticaTuplaLista
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étodosPocosMuchos

Casos de uso comunes

1. Retornar múltiples valores de funciones

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

python
coordenadas = {
    (40.7128, -74.0060): "Nueva York",
    (51.5074, -0.1278): "Londres"
}
print(coordenadas[(40.7128, -74.0060)])  # Nueva York

3. Datos que no deben cambiar

python
# Configuraciones constantes
CONFIGURACION = ("localhost", 8080, True)

4. Secuencias de elementos heterogéneos

python
# Cada posición tiene un significado específico
persona = ("Juan", 30, "Ingeniero")
nombre, edad, profesion = persona

Funciones útiles con tuplas

python
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 tupla

Ejemplos prácticos

Ejemplo 1: Coordenadas GPS

python
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.0

Ejemplo 2: Sistema de estudiantes

python
# 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

Entradas populares de este blog

¿Qué es un Closure?

4 tipos de colecciones de datos más

Funciones en Python: con y sin paréntesis