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

    notebook com código saindo da tela
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Variables en Python: guía completa para principiantes

    Aprende variables en Python: asignación, nombres, tipos, conversiones, referencias, mutabilidad, alcance, constantes, None y errores frecuentes.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Diferença entre operadores is e == em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    == vs is en Python: diferencia entre igualdad e identidad

    Entiende la diferencia entre == e is en Python, igualdad, identidad, None, interning, copias superficiales, deepcopy y objetos personalizados.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Menu interativo no terminal criado com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un menú interactivo en el terminal con Python

    Crea un menú interactivo en Python con while, funciones, diccionarios, validación, submenús, persistencia JSON y manejo seguro de errores.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    ícone de loop com o texto 'While' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles while en Python: guía práctica para principiantes

    Aprende bucles while en Python con condiciones, validación, menús, break, continue, else, centinelas, reintentos y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Imagem de um quadro negro com várias interrogações no lugar de lâmpadas, e uma lâmpada conectada no meio
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    If, elif y else en Python: guía de decisiones

    Aprende if, elif y else en Python con comparaciones, operadores lógicos, validación, rangos, menús, retornos tempranos y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Manipulação de dados JSON em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    JSON en Python: leer, escribir y validar datos

    Aprende JSON en Python con load, loads, dump, dumps, archivos UTF-8, validación, APIs, Decimal, fechas y escritura segura.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026