¿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.
# 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)
# 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ísicamenteEl problema con listas grandes
# 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 RAMLos generadores: La solución eficiente
Un generador NO es una lista - es una receta para producir valores bajo demanda.
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
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:
Antes de llamar a la función
Creando lista completa...
Después de llamar a la función
1
2
3
4
5Ejemplo 2: Generador
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:
Antes de llamar a la función
Después de llamar a la función
Produciendo 1...
1
Produciendo 2...
2
Produciendo 3...
3Analogí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
Publicar un comentario