META
🎯 Meta: dominar la cola (FIFO), la estructura de los turnos y de recorrer “a lo ancho”.
Una cola es como la fila del Centro Pokémon: el primero que llega es el primero que se atiende. FIFO: first in, first out.
Operaciones
cola = []
cola.append("a") # encolar: al final
cola.append("b")
primero = cola.pop(0) # atender: del frente → "a"
CUIDADO
⚠️ pop(0) sobre una lista grande es lento (mueve todos los elementos). Para colas de verdad se usa collections.deque, que saca del frente al instante:
from collections import deque
cola = deque(["a", "b"])
cola.popleft() # "a", rapidísimo
Pila vs cola
La diferencia es de dónde sacás:
| Saca de… | Sirve para… |
|---|
| Pila (LIFO) | arriba (pop()) | deshacer, recursión |
| Cola (FIFO) | el frente (pop(0)) | turnos, BFS |
¿Para qué sirve?
- Sistemas de turnos y tareas (el que pidió primero se atiende primero).
- Recorrer un grafo a lo ancho (BFS): se visitan los nodos por cercanía usando una cola.
✅ Comprobá lo que aprendiste
P: Una cola (queue) atiende primero a…
+ el que llegó primero (FIFO)
- el último que llegó (LIFO)
- el de nivel más alto
> Como la fila del Centro Pokémon: first in, first out.
P: Para colas grandes conviene…
+ `collections.deque` (saca del frente al instante)
- `lista.pop(0)` siempre
- un diccionario
> `pop(0)` en una lista mueve todos los elementos; `deque.popleft()` es O(1).
🚶 El Líder Kofu te espera con la fila de su restaurante.