Método LIFO (Last in First out)
Ejemplo:
LIFO | PILA |
---|---|
# Se trabaja con listas.
libros = ["Quijote", "Celestina", "Principito"]
# si fuera una pila de libros puestos en vertical, abajo estaría el Quijote y arriba el Principito
Se añaden por la derecha con append.
libros.append("La Odisea")
libros
['Quijote', 'Celestina', 'Principito', 'La Odisea']
Se eliminan por la derecha con pop. El último en llegar es el primero en salir.
libros.pop() # devuelve el último elemento de la lista y lo elimina
'La Odisea'
libros # observamos que 'La Odisea' ha sido eliminada de la lista
['Quijote', 'Celestina', 'Principito']
eliminado = libros.pop() # podemos guardar en una variable el elemento eliminado
print(libros)
eliminado
['Quijote', 'Celestina']
'Principito'
Usamos deque de la librería collections.
from collections import deque
cola = deque() # creando una cola vacía
cola
deque([])
Para añadir elementos a una cola podemos pasar una lista al objeto deque.
cola = deque(['Ana', 'Jose', 'Eva']) # Primero llegó Ana a la cola
cola.append('Luis')
cola.append('Bea') # Bea es la última en llegar
cola
deque(['Ana', 'Jose', 'Eva', 'Luis', 'Bea'])
El primer usuario al que atenderemos es al primero que llegó.
Los elementos se sacan por la izquierda con popleft.
El método popleft no funciona en las listas solo en las queue.
cola.popleft() # Atendemos a Ana
'Ana'
cola
deque(['Jose', 'Eva', 'Luis', 'Bea'])
atendido = cola.popleft() # Podemos guardar en una variable los elementos eliminados
atendido
'Jose'
cola
deque(['Eva', 'Luis', 'Bea'])
Nos proporcionan una lista con las fases para la creación de un proyecto tecnológico.
fases = ['Identificación','Exploración','Diseño','Planificación','Construcción','Evaluación','Divulgación']
Nos piden que asociemos cada fase con su número y las incorporemos a una lista para formar una matriz 7 x 2.
l=[[i+1,fases[i]]for i in range(len(fases))]
l
[[1, 'Identificación'], [2, 'Exploración'], [3, 'Diseño'], [4, 'Planificación'], [5, 'Construcción'], [6, 'Evaluación'], [7, 'Divulgación']]
Desordenamos las fases.
from random import shuffle
shuffle(l)
l
[[3, 'Diseño'], [1, 'Identificación'], [5, 'Construcción'], [6, 'Evaluación'], [7, 'Divulgación'], [4, 'Planificación'], [2, 'Exploración']]
Se pide:
usando colas, mostrar el listado de las fases ordenadas y sin número.
# primero ordenamos las fases
l.sort()
l
[[1, 'Identificación'], [2, 'Exploración'], [3, 'Diseño'], [4, 'Planificación'], [5, 'Construcción'], [6, 'Evaluación'], [7, 'Divulgación']]
from collections import deque
cola = deque() # creando una cola vacía
for fase in fases:
cola.append(fase)
cola
deque(['Identificación', 'Exploración', 'Diseño', 'Planificación', 'Construcción', 'Evaluación', 'Divulgación'])
for fase in cola:
print(fase)
Identificación Exploración Diseño Planificación Construcción Evaluación Divulgación
Ver que fase sería la que toca realizar.
cola.popleft()
'Identificación'