¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Pilas y colas: quién sale primero

La lección completa está aquí para leer. Crea una cuenta gratuita para ejecutar sus comandos en un laboratorio y hacer sus cuestionarios y tareas.

Lección de 40 minSin comandos

Deshacer y la impresora de la oficina

Escribes un informe y borras un párrafo sin querer. Pulsas Ctrl+Z y vuelve el párrafo, no lo que escribiste hace una hora.

En la misma oficina, cinco personas mandan documentos a la impresora. Sale primero el de quien lo mandó antes.

Los dos programas guardan una lista de cosas pendientes. Lo que cambia es cuál sacan primero.

Al final de esta lección

Nota

Puedo elegir una pila o una cola para un trabajo.

Palabras clave

PalabraQué significaEjemplo
Pilasale primero el último que entró
Colasale primero el primero que entró
Apilarponer un elemento encima de la pilahistory.append(x)
Desapilarsacar el elemento de arribahistory.pop()
Encolarponer un elemento al final de la cola
Desencolarsacar el elemento del principio de la cola

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una pila saca primero lo último

Piensa en una pila de platos en la cocina de un restaurante. Pones los limpios encima y coges siempre el de arriba.

Una pila de datos funciona igual. Apilar pone un elemento arriba. Desapilar saca el de arriba.

En Python basta una lista: append apila y pop() desapila. El botón de deshacer, el botón Atrás del navegador y muchas calculadoras usan una pila.

Prueba: deshacer cambios

Código: python
# Cada cambio en un documento se apila: el último queda arriba.
history = []
history.append("Escribir el título")
history.append("Poner el título en negrita")
history.append("Borrar un párrafo")
print("Historial:", history)

# Ctrl+Z deshace el cambio de arriba: el último que entró.
undone = history.pop()
print("Deshecho:", undone)
print("Historial:", history)

# Añade un segundo pop() para deshacer otro cambio y ejecuta.

Una cola saca primero lo primero

En la cola del súper, atienden primero a quien llegó antes. Una cola de datos hace lo mismo.

Encolar pone un elemento al final. Desencolar saca el del principio.

En Python se usa deque, de la biblioteca estándar. append encola y popleft() desencola. Las impresoras compartidas, los tiques de soporte y los pedidos de un almacén usan colas.

Prueba: la impresora compartida

Código: python
from collections import deque

# La impresora de la oficina atiende los trabajos por orden de llegada.
printer = deque()
printer.append("Nóminas de octubre.pdf")
printer.append("Contrato Ruiz.docx")
printer.append("Factura 2031.pdf")
print("En cola:", list(printer))

# popleft() saca el que lleva más tiempo esperando.
first = printer.popleft()
print("Imprimiendo:", first)
print("Siguen esperando:", list(printer))

# Encola "Presupuesto.xlsx" y saca otro trabajo con popleft().

Ejemplo resuelto: pila frente a cola

PasoPila (arriba a la derecha)Cola (principio a la izquierda)
Entra T1[T1][T1]
Entra T2[T1, T2][T1, T2]
Entra T3[T1, T2, T3][T1, T2, T3]
Sale unoSale T3, queda [T1, T2]Sale T1, queda [T2, T3]
Sale otroSale T2, queda [T1]Sale T2, queda [T3]

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que una pila y una cola guardan los datos de forma distinta. No es así: las dos pueden ser una simple lista. Lo que cambia es por qué extremo sacas. Si atiendes tiques con pop(), el cliente que llegó primero espera el último.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.