MÓDULO 1: INICIO

Listas y Tuplas

Las listas y tuplas son colecciones de datos. Imagina una lista como una caja con múltiples compartimentos donde puedes guardar varios valores. La diferencia: las listas son flexibles (puedes cambiarlas), las tuplas son rígidas (no puedes modificarlas).


1. Crear Listas

Las listas se crean con corchetes [] y pueden contener cualquier tipo de dato.

# Lista vacía
lista_vacia = []

# Lista con números
numeros = [1, 2, 3, 4, 5]

# Lista con strings
frutas = ["manzana", "banana", "naranja"]

# Lista mixta (diferentes tipos)
datos = ["Juan", 25, 1.75, True]

# Lista de listas
matriz = [[1, 2], [3, 4], [5, 6]]

print(numeros) # [1, 2, 3, 4, 5]
print(type(numeros)) # <class 'list'>

2. Acceder a Elementos de una Lista

Usa índices como en los strings. Comienzan en 0.

frutas = ["manzana", "banana", "naranja", "fresa"]

# Acceso positivo
print(frutas[0]) # manzana
print(frutas[2]) # naranja

# Acceso negativo
print(frutas[-1]) # fresa (último)
print(frutas[-2]) # naranja (penúltimo)

# Longitud
print(len(frutas)) # 4

3. Slicing en Listas

Extrae partes de una lista, igual que con strings.

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Primeros 5 elementos
print(numeros[:5]) # [0, 1, 2, 3, 4]

# Desde índice 3 hasta el final
print(numeros[3:]) # [3, 4, 5, 6, 7, 8, 9]

# Desde índice 2 hasta 7
print(numeros[2:7]) # [2, 3, 4, 5, 6]

# Cada 2 elementos
print(numeros[::2]) # [0, 2, 4, 6, 8]

# Invertir lista
print(numeros[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

4. Modificar Listas

Las listas son mutables (puedes cambiarlas).

frutas = ["manzana", "banana", "naranja"]

# Cambiar un elemento
frutas[1] = "fresa"
print(frutas) # ['manzana', 'fresa', 'naranja']

# Agregar al final
frutas.append("piña")
print(frutas) # ['manzana', 'fresa', 'naranja', 'piña']

# Insertar en posición específica
frutas.insert(1, "kiwi")
print(frutas) # ['manzana', 'kiwi', 'fresa', 'naranja', 'piña']

# Eliminar por índice
frutas.pop(0)
print(frutas) # ['kiwi', 'fresa', 'naranja', 'piña']

# Eliminar por valor
frutas.remove("fresa")
print(frutas) # ['kiwi', 'naranja', 'piña']

5. Métodos Útiles de Listas

Operaciones comunes con listas.

sort() / sorted()

Ordena la lista.

numeros = [3, 1, 4, 1, 5]

# sort() modifica la lista original
numeros.sort()
print(numeros) # [1, 1, 3, 4, 5]

# sorted() devuelve una nueva lista
numeros2 = [3, 1, 4]
ordenados = sorted(numeros2)
print(ordenados) # [1, 3, 4]

reverse()

Invierte la lista.

numeros = [1, 2, 3]
numeros.reverse()
print(numeros) # [3, 2, 1]

count()

Cuenta cuántas veces aparece un elemento.

numeros = [1, 2, 2, 3, 2]
print(numeros.count(2)) # 3

index()

Encuentra la posición de un elemento.

frutas = ["manzana", "banana", "naranja"]
print(frutas.index("banana")) # 1

extend() / +

Combina dos listas.

lista1 = [1, 2]
lista2 = [3, 4]

# Forma 1: extend()
lista1.extend(lista2)
print(lista1) # [1, 2, 3, 4]

# Forma 2: +
resultado = lista1 + lista2

clear()

Vacía la lista.

numeros = [1, 2, 3]
numeros.clear()
print(numeros) # []

6. Recorrer Listas

Diferentes formas de iterar sobre una lista.

frutas = ["manzana", "banana", "naranja"]

# Forma 1: for simple
for fruta in frutas:
    print(fruta)

# Forma 2: con índice
for i in range(len(frutas)):
    print(f"{i}: {frutas[i]}")

# Forma 3: enumerate() - índice y valor
for i, fruta in enumerate(frutas):
    print(f"{i}: {fruta}")

7. Crear Tuplas

Las tuplas son como listas, pero inmutables (no puedes cambiarlas).

# Tupla con paréntesis
tupla1 = (1, 2, 3)

# Tupla sin paréntesis
tupla2 = 4, 5, 6

# Tupla con un solo elemento (nota la coma)
tupla3 = (1,)

# Tupla vacía
tupla_vacia = ()

# Tupla mixta
tupla_mixta = ("Juan", 25, 1.75, True)

print(type(tupla1)) # <class 'tuple'>

¡Importante! Una tupla con un solo elemento necesita una coma al final.

tupla_correcta = (1,) # Es una tupla
no_es_tupla = (1) # Es solo un número entre paréntesis

8. Acceder a Tuplas

Igual que las listas, pero no puedes modificarlas.

tupla = ("Juan", 25, "Madrid")

# Acceso normal
print(tupla[0]) # Juan
print(tupla[-1]) # Madrid

# Slicing
print(tupla[:2]) # ('Juan', 25)

# Longitud
print(len(tupla)) # 3

# Desempacar tupla
nombre, edad, ciudad = tupla
print(f"{nombre} tiene {edad} años")

9. Listas vs Tuplas

¿Cuándo usar cada una?

📝 Listas

  • ✅ Cuando necesitas cambiar datos.
  • ✅ Cuando agregas/eliminas elementos.
  • ✅ Para datos dinámicos.

🔒 Tuplas

  • ✅ Cuando los datos no deben cambiar.
  • ✅ Como claves en diccionarios.
  • ✅ Para datos constantes.
  • ✅ Más rápidas que listas.

10. Caso Práctico: Gestión de Calificaciones

Usa listas para procesar datos.

# Lista de calificaciones
calificaciones = [7.5, 8.0, 6.5, 9.0, 7.0]

# Calcular promedio
promedio = sum(calificaciones) / len(calificaciones)
print(f"Promedio: {promedio:.2f}")

# Encontrar máxima y mínima
print(f"Máxima: {max(calificaciones)}")
print(f"Mínima: {min(calificaciones)}")

# Contar aprobados (>= 6)
aprobados = sum(1 for c in calificaciones if c >= 6)
print(f"Aprobados: {aprobados}/{len(calificaciones)}")

# Mostrar todas ordenadas
calificaciones_ordenadas = sorted(calificaciones)
print(f"Ordenadas: {calificaciones_ordenadas}")

11. Caso Práctico: Búsqueda en Lista

Verifica si un elemento existe en una lista.

# Lista de estudiantes
estudiantes = ["Juan", "Ana", "Pedro", "María"]

# Buscar un estudiante
nombre_buscado = input("¿Qué estudiante buscas? ")

if nombre_buscado in estudiantes:
    posicion = estudiantes.index(nombre_buscado)
    print(f"{nombre_buscado} está en la posición {posicion}")
else:
    print(f"{nombre_buscado} no está en la lista")

🛠️ Tu Misión

Usa Online Python para hacer estos ejercicios:

  1. Crea una lista con 5 números y accede a ellos usando índices positivos y negativos.
  2. Usa slicing para extraer los primeros 3 elementos, los últimos 2, e invierte la lista.
  3. Agrega 3 elementos a una lista usando append().
  4. Inserta un elemento en la posición 2 de una lista.
  5. Elimina un elemento de una lista usando remove().
  6. Ordena una lista de números y muéstralos.
  7. Crea una lista de nombres y recórrela mostrando el índice y el nombre.
  8. Crea una tupla con 4 elementos y desempácalos en variables.
  9. Intenta modificar una tupla (verás que da error).
  10. Bonus: Crea un programa que pida 5 calificaciones, calcule el promedio, y muestre cuántas están por encima del promedio.