Portada de libro electrónico gratuitaPython desde cero con mini-retos: aprende programando (sin teoría eterna)

Python desde cero con mini-retos: aprende programando (sin teoría eterna)

Nuevo curso

12 páginas

Listas para colecciones y gestión de información

Capítulo 6

Tiempo estimado de lectura: 6 minutos

+ Ejercicio

¿Qué es una lista y cuándo usarla?

Una lista en Python es una colección ordenada de elementos que puedes modificar (agregar, quitar o reemplazar). Es ideal cuando necesitas guardar varios datos relacionados en una sola variable: nombres de alumnos, precios, tareas pendientes, puntajes, productos en un carrito, etc.

Ideas clave para trabajar cómodo con listas:

  • Ordenadas: cada elemento tiene una posición (índice) empezando en 0.
  • Mutables: puedes cambiar su contenido sin crear una lista nueva.
  • Heterogéneas: pueden mezclar tipos (aunque en la práctica suele convenir que sean del mismo tipo).

Crear listas y leer elementos (índices y slicing)

Creas una lista con corchetes []. Para acceder a un elemento usas su índice. También puedes usar índices negativos para contar desde el final.

compras = ["pan", "leche", "huevos"]  # 3 elementos
print(compras[0])   # "pan" (primer elemento: índice 0)
print(compras[-1])  # "huevos" (último elemento)

El slicing te permite tomar un “trozo” de la lista: lista[inicio:fin] (el fin no se incluye).

numeros = [10, 20, 30, 40, 50]
print(numeros[1:4])  # [20, 30, 40]
print(numeros[:3])   # [10, 20, 30]
print(numeros[2:])   # [30, 40, 50]

Modificar listas: agregar, insertar, reemplazar y eliminar

Agregar al final: append

append agrega un elemento al final. Es la operación más común cuando vas construyendo una colección.

Continúa en nuestra aplicación.

Podrás escuchar el audiolibro con la pantalla apagada, recibir un certificado gratuito para este curso y además tener acceso a otros 5.000 cursos online gratuitos.

O continúa leyendo más abajo...
Download App

Descargar la aplicación

tareas = ["estudiar", "entrenar"]
tareas.append("comprar")
print(tareas)  # ["estudiar", "entrenar", "comprar"]

Insertar en una posición: insert

insert(indice, valor) coloca un elemento en una posición específica.

tareas.insert(1, "leer")
print(tareas)  # ["estudiar", "leer", "entrenar", "comprar"]

Reemplazar por índice

Si conoces el índice, puedes asignar directamente.

tareas[0] = "repasar"
print(tareas)  # ["repasar", "leer", "entrenar", "comprar"]

Eliminar: pop, remove, del

Hay varias formas, según lo que sepas (índice o valor) y lo que necesites (recuperar el elemento o no).

  • pop(): elimina por índice y devuelve el elemento (si no pasas índice, quita el último).
  • remove(valor): elimina la primera aparición de ese valor.
  • del: elimina por índice o por slice (no devuelve nada).
pendientes = ["pagar", "llamar", "enviar mail"]
hecha = pendientes.pop()      # quita "enviar mail" y lo guarda
print(hecha)                  # "enviar mail"
pendientes.remove("llamar")   # elimina por valor
del pendientes[0]             # elimina por índice
print(pendientes)             # []

Medir, buscar y contar: len, in, index, count

Estas herramientas te ayudan a gestionar información: saber cuántos elementos hay, si existe algo, dónde está y cuántas veces aparece.

colores = ["rojo", "azul", "rojo", "verde"]
print(len(colores))           # 4
print("azul" in colores)      # True
print(colores.count("rojo"))  # 2
print(colores.index("verde")) # 3

Nota práctica: index falla si el valor no existe. Si no estás seguro, primero verifica con in.

objetivo = "negro"
if objetivo in colores:
    print(colores.index(objetivo))
else:
    print("No está")

Ordenar y presentar información: sort, sorted, reverse

Cuando gestionas colecciones, ordenar es una necesidad frecuente.

  • sort() ordena la lista en el lugar (modifica la lista original).
  • sorted(lista) devuelve una nueva lista ordenada (no toca la original).
  • reverse() invierte el orden actual.
precios = [1200, 450, 999, 4500]
precios.sort()
print(precios)  # [450, 999, 1200, 4500]
nombres = ["Zoe", "Ana", "Luis"]
ordenados = sorted(nombres)
print(nombres)    # ["Zoe", "Ana", "Luis"]
print(ordenados)  # ["Ana", "Luis", "Zoe"]
ordenados.reverse()
print(ordenados)  # ["Zoe", "Luis", "Ana"]

Listas anidadas: colecciones de colecciones

Una lista puede contener otras listas. Esto es útil para representar tablas simples: filas y columnas.

ventas = [
    ["Ene", 1200],
    ["Feb", 1800],
    ["Mar", 1600]
]
print(ventas[0])     # ["Ene", 1200]
print(ventas[0][1])  # 1200

Si necesitas agregar una fila nueva:

ventas.append(["Abr", 2100])

Guía práctica paso a paso: mini-gestor de inventario con lista

Vas a crear un inventario sencillo donde cada producto se guarda como una lista de 3 datos: [nombre, stock, precio]. La colección completa será una lista de productos.

Paso 1: define la estructura y carga datos iniciales

inventario = [
    ["manzana", 10, 0.5],
    ["pan", 5, 1.2],
    ["leche", 8, 1.0]
]

Paso 2: agrega un producto nuevo

Cuando llega un producto nuevo, lo agregas al final.

inventario.append(["arroz", 12, 0.9])

Paso 3: busca un producto por nombre (recorriendo la lista)

Como el inventario es una lista de filas, buscas comparando el primer elemento de cada fila (el nombre).

buscado = "pan"
pos = -1
for i in range(len(inventario)):
    if inventario[i][0] == buscado:
        pos = i
        break
print(pos)  # índice del producto o -1 si no existe

Paso 4: actualiza stock y precio si existe

Si lo encontraste, puedes modificar la fila directamente.

if pos != -1:
    inventario[pos][1] = inventario[pos][1] + 3  # suma 3 unidades
    inventario[pos][2] = 1.3                     # nuevo precio
else:
    print("Producto no encontrado")

Paso 5: elimina un producto agotado

Si el stock llega a 0, lo quitas del inventario.

agotado = "leche"
pos = -1
for i in range(len(inventario)):
    if inventario[i][0] == agotado:
        pos = i
        break
if pos != -1:
    del inventario[pos]

Paso 6: genera un reporte simple (total de ítems y valoración)

Un reporte típico: cuántas unidades hay en total y cuánto vale el inventario (stock × precio).

unidades = 0
valor_total = 0.0
for producto in inventario:
    nombre = producto[0]
    stock = producto[1]
    precio = producto[2]
    unidades = unidades + stock
    valor_total = valor_total + (stock * precio)
print("Unidades totales:", unidades)
print("Valor total:", valor_total)

Mini-retos (para practicar gestionando colecciones)

Reto 1: lista de compras inteligente

Crea una lista compras. Permite agregar productos, eliminar uno por nombre y mostrar la lista ordenada alfabéticamente. Pistas: append, remove, sorted.

Reto 2: top 3 puntajes

Dada una lista de puntajes, ordénala de mayor a menor y quédate con los 3 primeros. Pistas: sorted(puntajes, reverse=True) y slicing [:3].

Reto 3: depuración de duplicados

Dada una lista con elementos repetidos, crea una nueva lista sin duplicados manteniendo el orden original. Pista: usa una lista vistos y verifica con in antes de agregar.

Ahora responde el ejercicio sobre el contenido:

¿Qué opción describe correctamente la diferencia entre sort() y sorted() al ordenar una lista?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

sort() ordena la lista en el lugar, cambiando su contenido. En cambio, sorted(lista) crea y devuelve una nueva lista ordenada, manteniendo la original sin cambios.

Siguiente capítulo

Mini-reto: calculadora por consola con opciones y manejo de errores

Arrow Right Icon
Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.