¿Qué es una lista en Python?

 

¿Qué es una lista en Python?

Una lista es una estructura de datos que almacena múltiples elementos en memoria de forma contigua.

python
# Ejemplo de lista
mi_lista = [1, 2, 3, 4, 5]

Características de una lista:

  • Se crea completa en memoria desde el principio

  • Ocupa espacio físico en la RAM

  • Puedes acceder a cualquier elemento directamente: mi_lista[2]

  • Tiene longitud fija una vez creada (a menos que la modifiques)

python
# Cuando haces esto:
lista = [1, 2, 3, 4, 5]

# En memoria se ve así:
# RAM: [1, 2, 3, 4, 5] ← Todos los elementos existen físicamente

El problema con listas grandes

python
# Imagina que quieres los números del 1 al 1,000,000
lista_grande = list(range(1, 1000001))

# ¡Esto ocupa MUCHA memoria! Todos los 1,000,000 números existen en RAM

Los generadores: La solución eficiente

Un generador NO es una lista - es una receta para producir valores bajo demanda.

python
def mi_generador():
    yield 1
    yield 2  
    yield 3
    yield 4
    yield 5

¿Cómo funciona?

  • NO almacena todos los valores en memoria

  • Produce un valor a la vez cuando se lo piden

  • "Pausa" su ejecución entre cada yield

Diferencia práctica con ejemplos:

Ejemplo 1: Lista tradicional

python
def crear_lista():
    print("Creando lista completa...")
    return [1, 2, 3, 4, 5]

print("Antes de llamar a la función")
lista = crear_lista()  # ← Aquí se crean TODOS los elementos
print("Después de llamar a la función")

for numero in lista:
    print(numero)

Salida:

text
Antes de llamar a la función
Creando lista completa...
Después de llamar a la función
1
2
3
4
5

Ejemplo 2: Generador

python
def crear_generador():
    print("Produciendo 1...")
    yield 1
    print("Produciendo 2...")  
    yield 2
    print("Produciendo 3...")
    yield 3

print("Antes de llamar a la función")
generador = crear_generador()  # ← ¡Aún no produce nada!
print("Después de llamar a la función")

for numero in generador:  # ← Los valores se producen DURANTE el bucle
    print(numero)

Salida:

text
Antes de llamar a la función
Después de llamar a la función
Produciendo 1...
1
Produciendo 2...
2
Produciendo 3...
3

Analogía práctica:

Lista = Comprar todos los ingredientes antes de cocinar

  • Ventaja: Tienes todo listo

  • Desventaja: Ocupas mucho espacio en la cocina

Generador = Ir a la tienda por cada ingrediente cuando lo necesitas

  • Ventaja: No ocupas espacio innecesario

  • Desventaja: Tardas más en total (pero usas menos recursos)

¿Cuándo usar cada uno?

Usa lista cuando:

  • Necesitas acceder a elementos aleatorios: lista[50]

  • Vas a usar los datos múltiples veces

  • La cantidad de datos es pequeña

Usa generador cuando:

  • Trabajas con MUCHOS datos

  • Solo necesitas recorrer los datos una vez

  • Quieres ahorrar memoria

¿Te queda más claro ahora la diferencia fundamental?

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis