# ─────────────────────────────────────────────
# TUPLAS Y LISTAS EN PYTHON
# ─────────────────────────────────────────────
# TUPLA: colección ordenada que NO se puede modificar (inmutable)
# Se define con paréntesis ( )
numeros = (1, 2, 3, 4)
# LISTA: colección ordenada que SÍ se puede modificar (mutable)
# Se define con corchetes [ ]
numeros_lista = [1, 2, 3, 4]
# También puedes crear una tupla SIN paréntesis, solo con comas
# Python la reconoce igualmente como tupla
masnumeros = 6, 7, 8, 9
print(numeros) # → (1, 2, 3, 4)
print(masnumeros) # → (6, 7, 8, 9)
# Recorrer una tupla con un bucle for (igual que con una lista)
for numero in numeros:
print(numero) # Imprime cada número en una línea distinta
# Las listas SÍ permiten cambiar sus elementos por índice
# El índice 0 es el primer elemento
numeros_lista[0] = 7 # Cambia el 1 por el 7 → [7, 2, 3, 4]
# numeros[0] = 7 ← Esto daría ERROR porque las tuplas son inmutables
# ─────────────────────────────────────────────
# FUNCIONES QUE DEVUELVEN MÚLTIPLES VALORES
# ─────────────────────────────────────────────
# Una función puede devolver varios valores separados por comas.
# En realidad, Python los empaqueta automáticamente en una tupla.
def estadistica(lista):
mayor = max(lista) # Valor más alto de la lista
menor = min(lista) # Valor más bajo de la lista
media = sum(lista) / len(lista) # Suma total dividida entre cantidad de elementos
return mayor, menor, media # Devuelve los tres valores como una tupla
# Llamamos a la función y guardamos el resultado (una tupla) en 'info'
info = estadistica([1, 2, 3, 4, 5])
print(info) # → (5, 1, 3.0) — imprime la tupla completa
# Podemos acceder a cada valor por su posición (índice)
print("mayor", info[0]) # → mayor 5
print("menor", info[1]) # → menor 1
print("media", info[2]) # → media 3.0
# DESEMPAQUETADO: asignar cada valor de la tupla a una variable distinta
# en una sola línea. El número de variables debe coincidir con los valores.
a, b, c = estadistica([1, 2, 3, 4, 5])
print(a) # → 5 (mayor)
print(b) # → 1 (menor)
print(c) # → 3.0 (media)
# ─────────────────────────────────────────────
# LISTAS DE TUPLAS
# ─────────────────────────────────────────────
# Una lista puede contener tuplas como elementos.
# Aquí cada tupla representa un punto con coordenadas (x, y).
puntos = [(1, 2), (3, 4), (5, 6)]
# OPCIÓN 1: recibir cada tupla completa y desempaquetarla dentro del bucle
for punto in puntos:
print(punto) # Imprime la tupla: (1, 2), (3, 4)...
x, y = punto # Desempaquetamos la tupla en dos variables
print(f"x vale {x} y vale {y}")
# OPCIÓN 2: desempaquetar directamente en la cabecera del for
# Es más compacto y hace exactamente lo mismo que la opción 1
for x, y in puntos:
print(f"x vale {x} y vale {y}")