Tuplas en Python: guía completa para principiantes

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
código Python de uma tupla com o texto separado formando a frase "O que são tuplas?"

Las tuplas en Python son colecciones ordenadas que no pueden modificarse después de su creación. Se parecen a las listas, pero su inmutabilidad las hace útiles para coordenadas, configuraciones fijas, claves de diccionarios, registros pequeños y funciones que devuelven varios resultados.

Esta guía explica cómo crear tuplas, acceder a elementos, utilizar slicing, desempaquetar valores, recorrer registros y decidir cuándo una tupla resulta más apropiada que una lista.

Qué es una tupla

Una tupla almacena una secuencia ordenada de valores. Puede contener números, texto, objetos o tipos mezclados:

point = (10, 25)
person = ("Amelia", 31, "Designer")
mixed = (1, "Python", True, 3.14)

Las tuplas conservan el orden y permiten duplicados. A diferencia de las listas, no admiten asignación, inserción ni eliminación de elementos.

La comparación entre listas, tuplas, sets y diccionarios ayuda a seleccionar la colección correcta.

Crear una tupla

Los paréntesis son habituales, pero la coma es la que crea la tupla:

colors = ("red", "green", "blue")
coordinates = 12.5, 8.2

print(type(colors))
print(type(coordinates))

Una tupla vacía se crea con paréntesis:

empty = ()

Una tupla con un único elemento necesita una coma final:

not_a_tuple = (5)
one_item_tuple = (5,)

print(type(not_a_tuple))
print(type(one_item_tuple))

La ausencia de esa coma es uno de los errores más frecuentes entre principiantes.

Utilizar tuple()

El constructor tuple() convierte otro iterable:

letters = tuple("Python")
numbers = tuple([1, 2, 3, 4])

print(letters)
print(numbers)

La documentación oficial de tuple describe su construcción y comportamiento como secuencia.

Índices y slicing

Las tuplas utilizan índices desde cero:

languages = ("Python", "JavaScript", "Go", "Rust")

print(languages[0])
print(languages[-1])

El slicing devuelve una tupla nueva:

print(languages[1:3])
print(languages[::-1])

Los mismos principios se aplican a cadenas y listas. La guía de slicing en Python explica inicio, fin, paso e índices negativos.

Inmutabilidad

Después de crear una tupla, sus referencias no pueden reemplazarse:

settings = ("dark", "es", 20)
# settings[0] = "light"  # TypeError

La inmutabilidad comunica que la colección representa un registro fijo. También permite que una tupla sea hashable cuando todos sus elementos son hashables:

locations = {
    (0, 0): "origin",
    (10, 5): "checkpoint",
}

print(locations[(10, 5)])

La guía de diccionarios en Python explica por qué las claves deben ser estables.

Objetos mutables dentro de una tupla

La tupla puede contener una lista u otro objeto mutable:

record = ("tasks", ["write", "review"])
record[1].append("publish")

print(record)

La referencia almacenada por la tupla no cambió, pero la lista sí. Por eso se dice que la inmutabilidad es superficial.

Empaquetado y desempaquetado

Crear una tupla también se conoce como empaquetar:

employee = "Jordan", "Engineering", 72000

Desempaquetar asigna cada posición a una variable:

name, department, salary = employee

print(name)
print(department)
print(salary)

El número de variables debe coincidir normalmente con la cantidad de elementos.

Desempaquetado extendido

Un asterisco recoge valores intermedios en una lista:

first, *middle, last = (10, 20, 30, 40, 50)

print(first)
print(middle)
print(last)

Este patrón es útil cuando el primer o último dato tiene un significado especial.

Intercambiar variables

left = "A"
right = "B"

left, right = right, left

print(left, right)

Python evalúa primero la parte derecha, empaqueta los valores y después los distribuye entre las variables.

Devolver varios valores

Una función puede devolver varios resultados, que Python empaqueta como tupla:

def calculate_stats(numbers):
    minimum = min(numbers)
    maximum = max(numbers)
    average = sum(numbers) / len(numbers)
    return minimum, maximum, average


lowest, highest, mean = calculate_stats([7, 4, 9, 6])
print(lowest, highest, mean)

La guía de funciones en Python explica retornos, parámetros y validación.

Métodos disponibles

Las tuplas poseen dos métodos principales:

  • count(value) cuenta ocurrencias;
  • index(value) devuelve la primera posición.
statuses = ("open", "closed", "open", "pending")

print(statuses.count("open"))
print(statuses.index("pending"))

index() genera ValueError si el elemento no existe. Cuando la ausencia sea normal, comprueba primero con in.

Recorrer tuplas

dimensions = (1920, 1080, 60)

for value in dimensions:
    print(value)

Cuando se necesita la posición:

for index, value in enumerate(dimensions):
    print(index, value)

La guía de bucles for en Python explica cómo recorrer secuencias, diccionarios y archivos.

Tuplas anidadas

grid = (
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9),
)

print(grid[1][2])

Las tuplas anidadas pueden representar matrices pequeñas, coordenadas, colores RGB o posiciones de un tablero. Para cálculo numérico intensivo, NumPy suele resultar más conveniente.

Tupla frente a lista

Utiliza una tupla cuando el número y el significado de los elementos sean estables. Utiliza una lista cuando debas añadir, eliminar, reemplazar o reordenar elementos:

location = (51.5074, -0.1278)

visited_cities = ["London", "Paris"]
visited_cities.append("Berlin")

La elección debe expresar el comportamiento esperado de los datos, no una microoptimización.

Tuplas como registros

Una tupla funciona bien para registros pequeños con posiciones conocidas:

records = (
    (101, "Ava", "active"),
    (102, "Noah", "inactive"),
    (103, "Mia", "active"),
)

active_users = []

for user_id, name, status in records:
    if status == "active":
        active_users.append((user_id, name))

print(active_users)

El desempaquetado da nombres a las posiciones y mejora la lectura.

NamedTuple y alternativas

Cuando recordar posiciones se vuelve difícil, utiliza NamedTuple:

from typing import NamedTuple


class Point(NamedTuple):
    x: float
    y: float


point = Point(10.5, 4.2)
print(point.x)

Una estructura con nombres conserva muchas propiedades de la tupla. Para datos que necesitan métodos, validación o campos opcionales, una dataclass puede ser mejor.

Ejemplo: colores RGB

COLORS = {
    "red": (255, 0, 0),
    "green": (0, 255, 0),
    "blue": (0, 0, 255),
}


def describe_color(name):
    red, green, blue = COLORS[name]
    return f"R={red}, G={green}, B={blue}"


print(describe_color("blue"))

Cada color es un registro fijo de tres valores, por lo que una tupla expresa bien su intención.

Errores frecuentes

  • Olvidar la coma de una tupla con un elemento.
  • Intentar modificar una posición.
  • Usar posiciones numéricas poco claras en registros complejos.
  • Suponer que un objeto mutable anidado no puede cambiar.
  • Desempaquetar en una cantidad incorrecta de variables.
  • Elegir una tupla para una colección que debe crecer.

Referencia adicional

La guía oficial de tuplas y secuencias describe el empaquetado y desempaquetado.

Conclusión

Las tuplas ofrecen colecciones ordenadas e inmutables con una sintaxis de desempaquetado muy práctica. Son adecuadas para coordenadas, configuraciones fijas, múltiples retornos, claves de diccionarios y registros pequeños. Cuando las posiciones pierdan claridad, cambia a un registro con nombres.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Logo do Python com as palavras global e local
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Alcance de variables en Python: entiende la regla LEGB

    Entiende el alcance de variables en Python con la regla LEGB, global, nonlocal, closures, sombreado, mutabilidad y UnboundLocalError.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Operações matemáticas usando o módulo math em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo math en Python: operaciones matemáticas esenciales

    Aprende el módulo math en Python: raíces, potencias, redondeos, trigonometría, logaritmos, constantes, isclose y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Geração de números aleatórios seguros usando secrets em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo secrets en Python: números y tokens seguros

    Aprende secrets en Python para generar contraseñas, códigos y tokens seguros con randbelow, choice, token_hex, token_urlsafe y compare_digest.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso do operador walrus para atribuições inline em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador walrus en Python: guía con ejemplos

    Aprende el operador walrus := en Python: condiciones, while, comprensiones, lectura por bloques, regex, alcance y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso da função zip para combinar listas em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    zip() en Python: combina listas e iterables correctamente

    Aprende zip() en Python para combinar listas, crear diccionarios, usar strict, zip_longest, desempaquetar valores y evitar pérdidas silenciosas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Uso do módulo time para controlar tempo em scripts Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo time en Python: pausas, timestamps y rendimiento

    Aprende el módulo time en Python: timestamps, sleep, monotonic, perf_counter, struct_time, strftime y buenas prácticas para medir tiempo.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026