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.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
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
Portada de libro electrónico gratuitaPython desde cero con mini-retos: aprende programando (sin teoría eterna)
50%

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

Nuevo curso

12 páginas

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