Python
Tutorial Python: Tuplas
Aprende las tuplas en Python: inmutabilidad, métodos, creación, acceso y desempaquetado para mejorar tu código con estructuras inmutables.
Aprende Python y certifícateInmutabilidad
Las tuplas en Python son estructuras de datos que, a primera vista, se parecen mucho a las listas. Sin embargo, existe una diferencia fundamental entre ambas: las tuplas son inmutables, mientras que las listas son mutables.
La inmutabilidad significa que, una vez creada una tupla, no podemos modificar su contenido. No es posible añadir, eliminar o cambiar elementos. Esta característica puede parecer una limitación, pero en realidad proporciona importantes ventajas en determinados contextos de programación.
¿Qué implica la inmutabilidad?
Cuando trabajamos con una tupla, debemos entender que:
- No podemos añadir elementos (
append
,extend
, etc.) - No podemos eliminar elementos (
remove
,pop
, etc.) - No podemos modificar elementos existentes mediante asignación
- No podemos ordenar la tupla "in-place" (
sort
)
Veamos un ejemplo que ilustra esta inmutabilidad:
# Creamos una tupla
coordenadas = (10, 20)
# Intentamos modificar un elemento
try:
coordenadas[0] = 15
except TypeError as e:
print(f"Error: {e}")
# Salida: Error: 'tuple' object does not support item assignment
Si intentamos modificar un elemento de una tupla, Python lanzará un TypeError
indicando que las tuplas no admiten asignación de elementos.
Ventajas de la inmutabilidad
La inmutabilidad no es una limitación, sino una característica que aporta beneficios importantes:
- Seguridad de datos: Garantiza que los datos no cambiarán accidentalmente.
- Hashabilidad: Las tuplas pueden usarse como claves en diccionarios y como elementos en conjuntos.
- Rendimiento: En ciertos escenarios, las operaciones con tuplas son más rápidas que con listas.
- Claridad de intención: Al usar una tupla, comunicamos que esos datos no deben cambiar.
Hashabilidad
Una consecuencia importante de la inmutabilidad es que las tuplas son hashables (siempre que todos sus elementos también lo sean). Esto significa que pueden usarse como claves en diccionarios y como elementos en conjuntos:
# Usando tuplas como claves en un diccionario
ubicaciones = {
(40.7128, -74.0060): "Nueva York",
(34.0522, -118.2437): "Los Ángeles",
(41.8781, -87.6298): "Chicago"
}
# Buscando una ubicación
print(ubicaciones[(40.7128, -74.0060)]) # Salida: Nueva York
# Esto no funcionaría con listas
try:
ubicaciones_error = {[40.7128, -74.0060]: "Nueva York"}
except TypeError as e:
print(f"Error con listas: {e}")
# Salida: Error con listas: unhashable type: 'list'
Casos de uso para tuplas inmutables
La inmutabilidad hace que las tuplas sean ideales para:
- Datos que no deben cambiar: Constantes, configuraciones, valores fijos.
- Coordenadas: Pares o ternas de valores que representan posiciones.
- Claves compuestas: Para usar como claves en diccionarios.
- Retorno múltiple de funciones: Cuando una función necesita devolver varios valores.
# Función que devuelve múltiples valores como tupla
def obtener_dimensiones_pantalla():
# Valores que no deberían cambiar una vez obtenidos
return (1920, 1080)
# Desempaquetado de la tupla retornada
ancho, alto = obtener_dimensiones_pantalla()
print(f"Resolución: {ancho}x{alto}") # Salida: Resolución: 1920x1080
Inmutabilidad vs. contenido mutable
Es importante entender que la inmutabilidad de la tupla se refiere a la estructura de la tupla en sí, no necesariamente a sus elementos. Si una tupla contiene objetos mutables (como listas), esos objetos pueden modificarse:
# Tupla que contiene una lista
configuracion = ("config_v1", [1, 2, 3])
# No podemos cambiar la tupla
# configuracion[0] = "config_v2" # Esto daría error
# Pero podemos modificar la lista dentro de la tupla
configuracion[1].append(4)
print(configuracion) # Salida: ('config_v1', [1, 2, 3, 4])
En este ejemplo, aunque la tupla en sí es inmutable (no podemos cambiar sus elementos directamente), el segundo elemento es una lista que sí puede modificarse.
Inmutabilidad y rendimiento
La inmutabilidad también puede ofrecer ventajas de rendimiento en ciertos escenarios. Python puede optimizar el manejo de objetos inmutables, ya que sabe que no cambiarán:
import timeit
# Comparación de rendimiento en operaciones simples
tiempo_lista = timeit.timeit(stmt="[1, 2, 3, 4, 5]", number=1000000)
tiempo_tupla = timeit.timeit(stmt="(1, 2, 3, 4, 5)", number=1000000)
print(f"Tiempo para crear 1M de listas: {tiempo_lista:.6f} segundos")
print(f"Tiempo para crear 1M de tuplas: {tiempo_tupla:.6f} segundos")
print(f"Diferencia: {(tiempo_lista/tiempo_tupla):.2f}x más rápido con tuplas")
Este código generalmente mostrará que la creación de tuplas es más rápida que la de listas, aunque la diferencia puede variar según la versión de Python y el sistema.
La inmutabilidad es una característica fundamental de las tuplas que las distingue de las listas y determina en gran medida cuándo y cómo debemos utilizarlas en nuestros programas.
Creación y acceso
Las tuplas en Python son estructuras de datos que nos permiten almacenar colecciones ordenadas de elementos. A diferencia de las listas, las tuplas se caracterizan por su inmutabilidad, lo que las hace ideales para representar datos que no deben cambiar durante la ejecución del programa.
Creación de tuplas
Existen varias formas de crear tuplas en Python:
1. Usando paréntesis
La forma más común de crear una tupla es mediante paréntesis ()
y separando los elementos con comas:
# Tupla de números
numeros = (1, 2, 3, 4, 5)
# Tupla de cadenas
frutas = ("manzana", "naranja", "plátano")
# Tupla mixta
datos = (1, "Python", True, 3.14)
2. Sin paréntesis (mediante comas)
En Python, lo que realmente define una tupla son las comas, no los paréntesis. Podemos crear tuplas simplemente separando valores con comas:
# Creación de tupla sin paréntesis
coordenadas = 10, 20, 30
print(type(coordenadas)) # Salida: <class 'tuple'>
print(coordenadas) # Salida: (10, 20, 30)
3. Tupla vacía
Para crear una tupla vacía, debemos usar paréntesis sin elementos:
tupla_vacia = ()
print(type(tupla_vacia)) # Salida: <class 'tuple'>
4. Tupla con un solo elemento
Para crear una tupla con un solo elemento, debemos incluir una coma después del valor (de lo contrario, Python interpretará el valor como el tipo del propio valor, no como una tupla):
# Incorrecto - no es una tupla
no_es_tupla = (42)
print(type(no_es_tupla)) # Salida: <class 'int'>
# Correcto - es una tupla con un elemento
tupla_singleton = (42,)
print(type(tupla_singleton)) # Salida: <class 'tuple'>
# También funciona sin paréntesis
otra_tupla_singleton = 42,
print(type(otra_tupla_singleton)) # Salida: <class 'tuple'>
5. Usando el constructor tuple()
Podemos crear tuplas a partir de otros iterables utilizando el constructor tuple()
:
# Desde una lista
lista = [1, 2, 3]
tupla_desde_lista = tuple(lista)
print(tupla_desde_lista) # Salida: (1, 2, 3)
# Desde una cadena
tupla_desde_cadena = tuple("Python")
print(tupla_desde_cadena) # Salida: ('P', 'y', 't', 'h', 'o', 'n')
# Desde un rango
tupla_desde_rango = tuple(range(5))
print(tupla_desde_rango) # Salida: (0, 1, 2, 3, 4)
6. Comprensión de tuplas (Python 3.13+)
A partir de Python 3.13, se introdujo la sintaxis de comprensión de tuplas, similar a las comprensiones de listas:
# Comprensión de tuplas (Python 3.13+)
cuadrados = tuple(x**2 for x in range(5))
print(cuadrados) # Salida: (0, 1, 4, 9, 16)
En versiones anteriores, necesitábamos envolver la expresión generadora con tuple()
.
Acceso a elementos de tuplas
El acceso a los elementos de una tupla es similar al de las listas, utilizando índices que comienzan en 0:
1. Acceso por índice
coordenadas = (10, 20, 30, 40)
# Acceso al primer elemento (índice 0)
x = coordenadas[0]
print(x) # Salida: 10
# Acceso al tercer elemento (índice 2)
z = coordenadas[2]
print(z) # Salida: 30
2. Índices negativos
Los índices negativos cuentan desde el final de la tupla:
datos = ("Python", 3.9, 2023, "Tuplas")
# Último elemento
ultimo = datos[-1]
print(ultimo) # Salida: Tuplas
# Penúltimo elemento
penultimo = datos[-2]
print(penultimo) # Salida: 2023
3. Slicing (rebanado)
Podemos obtener subtuplas utilizando la notación de rebanado [inicio:fin:paso]
:
numeros = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# Elementos del índice 2 al 5 (sin incluir el 6)
subtupla1 = numeros[2:6]
print(subtupla1) # Salida: (2, 3, 4, 5)
# Elementos desde el inicio hasta el índice 4
subtupla2 = numeros[:5]
print(subtupla2) # Salida: (0, 1, 2, 3, 4)
# Elementos desde el índice 6 hasta el final
subtupla3 = numeros[6:]
print(subtupla3) # Salida: (6, 7, 8, 9)
# Elementos con paso 2
subtupla4 = numeros[1:8:2]
print(subtupla4) # Salida: (1, 3, 5, 7)
# Invertir la tupla
invertida = numeros[::-1]
print(invertida) # Salida: (9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
4. Verificación de pertenencia
Podemos comprobar si un elemento está en una tupla utilizando el operador in
:
frutas = ("manzana", "naranja", "plátano", "uva")
# Verificar si un elemento está en la tupla
tiene_naranja = "naranja" in frutas
print(tiene_naranja) # Salida: True
tiene_pera = "pera" in frutas
print(tiene_pera) # Salida: False
Métodos de tuplas
Debido a su inmutabilidad, las tuplas tienen menos métodos que las listas. Los dos métodos principales son:
1. count()
Cuenta cuántas veces aparece un elemento en la tupla:
numeros = (1, 2, 3, 2, 4, 2, 5)
# Contar ocurrencias del número 2
ocurrencias = numeros.count(2)
print(ocurrencias) # Salida: 3
2. index()
Devuelve el índice de la primera aparición de un elemento:
colores = ("rojo", "verde", "azul", "amarillo", "verde")
# Encontrar el índice de "azul"
indice_azul = colores.index("azul")
print(indice_azul) # Salida: 2
# Encontrar la primera aparición de "verde"
indice_verde = colores.index("verde")
print(indice_verde) # Salida: 1
El método index()
lanza un ValueError
si el elemento no está en la tupla:
try:
indice = colores.index("morado")
except ValueError as e:
print(f"Error: {e}") # Salida: Error: 'morado' is not in tuple
Casos prácticos de creación y acceso
Representación de coordenadas geográficas
# Tupla para representar coordenadas (latitud, longitud)
madrid = (40.4168, -3.7038)
barcelona = (41.3851, 2.1734)
# Acceso a componentes
print(f"Madrid - Latitud: {madrid[0]}, Longitud: {madrid[1]}")
# Salida: Madrid - Latitud: 40.4168, Longitud: -3.7038
Representación de registros de datos
# Tupla para representar un registro (id, nombre, edad, email)
usuario = (1001, "Ana García", 28, "ana@ejemplo.com")
# Acceso a campos específicos
id_usuario, nombre, edad, email = usuario
print(f"Usuario: {nombre}, {edad} años")
# Salida: Usuario: Ana García, 28 años
Uso de tuplas en diccionarios
# Diccionario con tuplas como claves para representar rangos de fechas
ventas_por_periodo = {
(2023, 1): 12500, # Enero 2023
(2023, 2): 15200, # Febrero 2023
(2023, 3): 18100 # Marzo 2023
}
# Acceso a datos usando tuplas como claves
ventas_febrero = ventas_por_periodo[(2023, 2)]
print(f"Ventas en febrero 2023: {ventas_febrero}")
# Salida: Ventas en febrero 2023: 15200
Tuplas anidadas
# Matriz representada como tupla de tuplas
matriz = (
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
)
# Acceso a elementos de la matriz
elemento = matriz[1][2] # Fila 1, columna 2
print(f"Elemento en posición [1][2]: {elemento}")
# Salida: Elemento en posición [1][2]: 6
# Iteración por filas
for fila in matriz:
print(fila)
# Salida: (1, 2, 3)
# (4, 5, 6)
# (7, 8, 9)
Las tuplas son estructuras de datos versátiles que, a pesar de su inmutabilidad, ofrecen múltiples formas de creación y acceso a sus elementos, lo que las hace ideales para representar datos que deben permanecer constantes durante la ejecución del programa.
Desempaquetado
El desempaquetado de tuplas es una característica elegante de Python que permite asignar los elementos de una tupla a múltiples variables en una sola operación. Esta técnica simplifica el código y lo hace más legible, evitando el acceso a elementos mediante índices.
Desempaquetado básico
La forma más simple de desempaquetar una tupla es asignar cada uno de sus elementos a variables individuales:
# Tupla con información de un producto
producto = ("Laptop XPS", 1299.99, "Dell")
# Desempaquetado en variables individuales
nombre, precio, fabricante = producto
print(nombre) # Salida: Laptop XPS
print(precio) # Salida: 1299.99
print(fabricante) # Salida: Dell
En este ejemplo, Python asigna automáticamente cada elemento de la tupla a la variable correspondiente en el orden especificado. Es importante que el número de variables coincida exactamente con el número de elementos en la tupla, de lo contrario, obtendremos un error:
# Esto generará un error
try:
a, b = (1, 2, 3)
except ValueError as e:
print(f"Error: {e}") # Salida: Error: too many values to unpack (expected 2)
Uso del operador asterisco (*)
A partir de Python 3.0, podemos usar el operador asterisco (*
) para capturar múltiples elementos en una lista:
# Desempaquetado con operador asterisco
numeros = (1, 2, 3, 4, 5)
# Capturar el primer elemento y el resto en una lista
primero, *resto = numeros
print(primero) # Salida: 1
print(resto) # Salida: [2, 3, 4, 5]
# Capturar el primer y último elemento, y el resto en el medio
primero, *medio, ultimo = numeros
print(primero) # Salida: 1
print(medio) # Salida: [2, 3, 4]
print(ultimo) # Salida: 5
# Capturar los primeros elementos y el último
*iniciales, ultimo = numeros
print(iniciales) # Salida: [1, 2, 3, 4]
print(ultimo) # Salida: 5
El operador *
puede aparecer en cualquier posición, pero solo puede usarse una vez en una asignación de desempaquetado. La variable precedida por *
siempre captura los elementos como una lista, incluso si no hay elementos para capturar (en cuyo caso será una lista vacía).
Ignorar valores con guion bajo
Si solo nos interesan algunos elementos de la tupla, podemos usar el guion bajo (_
) como convención para indicar que no nos importa el valor:
# Ignorar valores que no necesitamos
datos = ("Juan", "Pérez", 35, "Madrid", "Ingeniero")
# Solo nos interesan el nombre, la edad y la profesión
nombre, _, edad, _, profesion = datos
print(f"{nombre}, {edad} años, {profesion}") # Salida: Juan, 35 años, Ingeniero
# También podemos usar el operador * con _
nombre, *_ = datos
print(f"Solo me interesa el nombre: {nombre}") # Salida: Solo me interesa el nombre: Juan
# O capturar solo los últimos elementos
*_, ciudad, profesion = datos
print(f"Trabaja como {profesion} en {ciudad}") # Salida: Trabaja como Ingeniero en Madrid
Intercambio de variables
Una aplicación elegante del desempaquetado es el intercambio de valores entre variables sin necesidad de una variable temporal:
# Intercambio de variables tradicional
a = 5
b = 10
# Sin desempaquetado
temp = a
a = b
b = temp
print(a, b) # Salida: 10 5
# Con desempaquetado
a, b = 5, 10
a, b = b, a # Intercambio en una línea
print(a, b) # Salida: 10 5
Desempaquetado en bucles
El desempaquetado es especialmente útil en bucles cuando trabajamos con secuencias de tuplas:
# Lista de tuplas con datos de estudiantes (nombre, edad, calificación)
estudiantes = [
("Ana", 22, 9.5),
("Carlos", 20, 8.7),
("Elena", 21, 9.2)
]
# Desempaquetado en un bucle for
for nombre, edad, calificacion in estudiantes:
print(f"{nombre} ({edad} años): {calificacion}")
# Salida:
# Ana (22 años): 9.5
# Carlos (20 años): 8.7
# Elena (21 años): 9.2
Este enfoque es mucho más legible que acceder a los elementos por índice:
# Sin desempaquetado (menos legible)
for estudiante in estudiantes:
print(f"{estudiante[0]} ({estudiante[1]} años): {estudiante[2]}")
Desempaquetado con la función enumerate()
Cuando necesitamos tanto el índice como el valor en un bucle, podemos combinar enumerate()
con el desempaquetado:
colores = ("rojo", "verde", "azul")
# Obtener índice y valor
for i, color in enumerate(colores):
print(f"Índice {i}: {color}")
# Salida:
# Índice 0: rojo
# Índice 1: verde
# Índice 2: azul
# Comenzar desde un índice específico
for i, color in enumerate(colores, start=1):
print(f"Color {i}: {color}")
# Salida:
# Color 1: rojo
# Color 2: verde
# Color 3: azul
Desempaquetado con la función zip()
La función zip()
permite combinar múltiples iterables y desempaquetar sus elementos simultáneamente:
nombres = ("Ana", "Carlos", "Elena")
edades = (22, 20, 21)
ciudades = ("Madrid", "Barcelona", "Valencia")
# Combinar tres tuplas y desempaquetar
for nombre, edad, ciudad in zip(nombres, edades, ciudades):
print(f"{nombre} tiene {edad} años y vive en {ciudad}")
# Salida:
# Ana tiene 22 años y vive en Madrid
# Carlos tiene 20 años y vive en Barcelona
# Elena tiene 21 años y vive en Valencia
Desempaquetado en funciones
El desempaquetado es útil para devolver y capturar múltiples valores desde funciones:
def obtener_estadisticas(numeros):
"""Calcula estadísticas básicas de una secuencia de números."""
minimo = min(numeros)
maximo = max(numeros)
promedio = sum(numeros) / len(numeros)
return minimo, maximo, promedio # Devuelve una tupla
# Llamada a la función y desempaquetado del resultado
datos = [4, 7, 2, 9, 5, 3]
min_valor, max_valor, media = obtener_estadisticas(datos)
print(f"Mínimo: {min_valor}") # Salida: Mínimo: 2
print(f"Máximo: {max_valor}") # Salida: Máximo: 9
print(f"Promedio: {media:.2f}") # Salida: Promedio: 5.00
Desempaquetado anidado
También podemos desempaquetar estructuras anidadas, como tuplas dentro de tuplas:
# Tupla con estructura anidada (nombre, (latitud, longitud))
ubicacion = ("Parque Retiro", (40.4153, -3.6845))
# Desempaquetado anidado
lugar, (lat, lon) = ubicacion
print(f"Lugar: {lugar}") # Salida: Lugar: Parque Retiro
print(f"Coordenadas: {lat}, {lon}") # Salida: Coordenadas: 40.4153, -3.6845
Aplicaciones prácticas
El desempaquetado de tuplas tiene numerosas aplicaciones en código real:
Procesamiento de datos CSV
# Simulación de datos CSV como lista de tuplas
datos_csv = [
("2023-01-15", "Venta", 1250.50),
("2023-01-16", "Compra", -450.75),
("2023-01-17", "Venta", 825.25)
]
# Procesamiento con desempaquetado
total_ventas = 0
for fecha, tipo, monto in datos_csv:
if tipo == "Venta":
total_ventas += monto
print(f"Total de ventas: ${total_ventas:.2f}") # Salida: Total de ventas: $2075.75
Manejo de respuestas HTTP
# Simulación de respuestas HTTP (código, mensaje, datos)
respuestas = [
(200, "OK", {"usuario": "admin"}),
(404, "Not Found", None),
(500, "Server Error", {"error": "Database connection failed"})
]
# Procesamiento de respuestas
for codigo, mensaje, datos in respuestas:
print(f"Código: {codigo}")
print(f"Mensaje: {mensaje}")
print(f"Datos: {datos if datos else 'Sin datos'}")
print("-" * 30)
Extracción de información de diccionarios
# Diccionario de configuración
config = {
"servidor": ("192.168.1.10", 8080),
"timeout": 30,
"debug": True
}
# Extraer y desempaquetar la información del servidor
host, puerto = config["servidor"]
print(f"Conectando a {host}:{puerto}") # Salida: Conectando a 192.168.1.10:8080
El desempaquetado de tuplas es una técnica que hace que el código Python sea más conciso, legible y expresivo. Dominar esta característica te permitirá escribir código más elegante y reducir la necesidad de acceder a elementos por índice, lo que a menudo es propenso a errores.
Otras lecciones de Python
Accede a todas las lecciones de Python y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Python
Introducción
Instalación Y Creación De Proyecto
Introducción
Tema 2: Tipos De Datos, Variables Y Operadores
Introducción
Instalación De Python
Introducción
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Estructuras Control Iterativo
Sintaxis
Estructuras Control Condicional
Sintaxis
Testing Con Pytest
Sintaxis
Listas
Estructuras De Datos
Tuplas
Estructuras De Datos
Diccionarios
Estructuras De Datos
Conjuntos
Estructuras De Datos
Comprehensions
Estructuras De Datos
Clases Y Objetos
Programación Orientada A Objetos
Excepciones
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Mixins Y Herencia Múltiple
Programación Orientada A Objetos
Métodos Especiales (Dunder Methods)
Programación Orientada A Objetos
Composición De Clases
Programación Orientada A Objetos
Funciones Lambda
Programación Funcional
Aplicación Parcial
Programación Funcional
Entrada Y Salida, Manejo De Archivos
Programación Funcional
Decoradores
Programación Funcional
Generadores
Programación Funcional
Paradigma Funcional
Programación Funcional
Composición De Funciones
Programación Funcional
Funciones Orden Superior Map Y Filter
Programación Funcional
Funciones Auxiliares
Programación Funcional
Reducción Y Acumulación
Programación Funcional
Archivos Comprimidos
Entrada Y Salida Io
Entrada Y Salida Avanzada
Entrada Y Salida Io
Archivos Temporales
Entrada Y Salida Io
Contexto With
Entrada Y Salida Io
Módulo Csv
Biblioteca Estándar
Módulo Json
Biblioteca Estándar
Módulo Datetime
Biblioteca Estándar
Módulo Math
Biblioteca Estándar
Módulo Os
Biblioteca Estándar
Módulo Re
Biblioteca Estándar
Módulo Random
Biblioteca Estándar
Módulo Time
Biblioteca Estándar
Módulo Collections
Biblioteca Estándar
Módulo Sys
Biblioteca Estándar
Módulo Statistics
Biblioteca Estándar
Módulo Pickle
Biblioteca Estándar
Módulo Pathlib
Biblioteca Estándar
Importar Módulos Y Paquetes
Paquetes Y Módulos
Crear Módulos Y Paquetes
Paquetes Y Módulos
Entornos Virtuales (Virtualenv, Venv)
Entorno Y Dependencias
Gestión De Dependencias (Pip, Requirements.txt)
Entorno Y Dependencias
Python-dotenv Y Variables De Entorno
Entorno Y Dependencias
Acceso A Datos Con Mysql, Pymongo Y Pandas
Acceso A Bases De Datos
Acceso A Mongodb Con Pymongo
Acceso A Bases De Datos
Acceso A Mysql Con Mysql Connector
Acceso A Bases De Datos
Novedades Python 3.13
Características Modernas
Operador Walrus
Características Modernas
Pattern Matching
Características Modernas
Instalación Beautiful Soup
Web Scraping
Sintaxis General De Beautiful Soup
Web Scraping
Tipos De Selectores
Web Scraping
Web Scraping De Html
Web Scraping
Web Scraping Para Ciencia De Datos
Web Scraping
Autenticación Y Acceso A Recursos Protegidos
Web Scraping
Combinación De Selenium Con Beautiful Soup
Web Scraping
Ejercicios de programación de Python
Evalúa tus conocimientos de esta lección Tuplas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Módulo math
Reto herencia
Excepciones
Introducción a Python
Reto variables
Funciones Python
Reto funciones
Módulo datetime
Reto acumulación
Reto estructuras condicionales
Polimorfismo
Módulo os
Reto métodos dunder
Diccionarios
Reto clases y objetos
Reto operadores
Operadores
Estructuras de control
Funciones lambda
Reto diccionarios
Reto función lambda
Encapsulación
Reto coleciones
Reto funciones auxiliares
Crear módulos y paquetes
Módulo datetime
Excepciones
Operadores
Diccionarios
Reto map, filter
Reto tuplas
Proyecto gestor de tareas CRUD
Tuplas
Variables
Tipos de datos
Conjuntos
Reto mixins
Módulo csv
Módulo json
Herencia
Análisis de datos de ventas con Pandas
Reto fechas y tiempo
Reto estructuras de iteración
Funciones
Reto comprehensions
Variables
Reto serialización
Módulo csv
Reto polimorfismo
Polimorfismo
Clases y objetos
Reto encapsulación
Estructuras de control
Importar módulos y paquetes
Módulo math
Funciones lambda
Reto excepciones
Listas
Reto archivos
Encapsulación
Reto conjuntos
Clases y objetos
Instalación de Python y creación de proyecto
Reto listas
Tipos de datos
Crear módulos y paquetes
Tuplas
Herencia
Reto acceso a sistema
Proyecto sintaxis calculadora
Importar módulos y paquetes
Clases y objetos
Módulo os
Listas
Conjuntos
Reto tipos de datos
Reto matemáticas
Módulo json
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la inmutabilidad de las tuplas y sus implicaciones.
- Aprender las distintas formas de crear y acceder a elementos en una tupla.
- Conocer las ventajas y casos de uso de las tuplas en programación.
- Dominar el desempaquetado de tuplas para asignar valores a variables de forma eficiente.
- Aplicar técnicas avanzadas de desempaquetado en bucles, funciones y estructuras anidadas.