Python Pilas y Colas

21
Aprendiendo Python Estructuras de Datos Por Juan Astudillo

description

Manual que hize para aprender Tipos de datos abstractos (TDA) con python, Solo por ahora con Pilas (Stacks) y Colas (Queues)

Transcript of Python Pilas y Colas

Page 1: Python Pilas y Colas

Aprendiendo PythonEstructuras de Datos

Por Juan Astudillo

Page 2: Python Pilas y Colas

TDA: Tipos Abstractos de Datos

Pilas, Colas, Listas por Comprensión (Stack & Queue)

Page 3: Python Pilas y Colas

Data Type List • list.append(x)

Agrega un elemento al final de la lista; equivalente a: a[len(a):] = [x].

• list.extend(L)Extiende la lista agregando todos los elementos de la lista dada; equivalente a a[len(a):] = L.

• list.insert(i, x)Inserta un ítem a la posición dada. El primer argumento es el índice del elemento antes del cual se va a insertar, entonces a.insert(0, x) inserta al frente de la lista, y a.insert(len(a), x) es equivalente a a.append(x).

Page 4: Python Pilas y Colas

Data Type List

• list.remove(x)Remueve el primer item desde la lista cuyo valor es x. Arroja un error si no existe tal ítem.

• list.pop([i])Remueve el item a la posición entregada en la lista, y lo retorna. Si el índice no es especificado, a.pop() remueve y retorna el ultimo ítem en la lista. (Los paréntesis cuadrados alrededor de i en el método denota que el parámetro es opcional).

Page 5: Python Pilas y Colas

Data Type List

• list.index(x)Retorna el índice en la lista del primer ítem cuyo valor es x. Arroja un error si dicho ítem no está.

• list.count(x)Retorno el numero de veces que x aparece en la lista.

• list.sort()Ordena los ítems de la lista.

• list.reverse()Reversa los elementos de la lista.

Page 6: Python Pilas y Colas

Pilas (Stacks)

• Una pila (stack en inglés) es parte de los TDA (Tipos Abstractos de Datos) es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos.

• Esta estructura TDA se usa en multitud de ocasiones en el área de la informática debido a su simplicitud y ordenación implícita de la propia estructura.

Page 7: Python Pilas y Colas

Pilas (Stacks)

• En todo momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés ( es español a veces llamado Tope)). La operación sacar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.

• Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.

Page 8: Python Pilas y Colas

Pilas (Stacks)

• Para que se ocupan las Pilas:

-Evaluación de expresiones en notación postfija (notación polaca inversa).-Reconocedores sintácticos de lenguajes independientes del contexto-Implementación de recursividad.

Page 9: Python Pilas y Colas

Pilas (Stacks)Operaciones con Pilas

Una pila cuenta con 2 operaciones imprescindibles: apilar (Push) y desapilar (Pop), a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual.

Crear: se crea la pila vacía. (constructor)

Tamaño: regresa el numero de elementos de la pila. (size)

Apilar: se añade un elemento a la pila.(push)

Page 10: Python Pilas y Colas

Pilas (Stacks)

• Operaciones con Pilas (continuación)

Desapilar (retirar): se elimina el elemento frontal de la pila.(pop)

Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)

Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).

Page 11: Python Pilas y Colas

Pilas (Stacks)

Page 12: Python Pilas y Colas

Pilas (Stacks)Programa en Python que muestra el comportamiento de LIFO

Utlizamos el datatype “List” y algunos métodos para ocuparlo como stackType "help", "copyright", "credits" or "license" for more information.>>> stack = [2,4,5]>>> stack.append(6)>>> stack.append(7)>>> stack[2, 4, 5, 6, 7]>>> stack.pop()7>>> stack.pop()6>>> stack.pop()5>>> stack.pop()4>>> stack.pop()2>>> stack.pop()

Page 13: Python Pilas y Colas

Colas (Queue)

•Una cola (también llamada fila) es otro TDA, es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.

•Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento.

Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Page 14: Python Pilas y Colas

Colas (Queue)

Operaciones Básicas con Colas

•Crear: se crea la cola vacía.

•Encolar (añadir, entrar, insertar): se añade un elemento a la cola. Se añade al final de esta.

•Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.

•Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entró.

Page 15: Python Pilas y Colas

Colas (Queue)Ejemplo Visual de Cola

Page 16: Python Pilas y Colas

Colas (Queue)

>>> from collections import deque>>> queue = deque(["Erick", "Miguel", "john"])>>> queue.append("david")>>> queue.append("hoffmann")>>> queue.popleft()>>> queue.popleft()'Erick'>>> queue.popleft()'Miguel'>>> queue.popleft()'john'>>> queue.popleft()'david'>>> queue.popleft()'hoffmann'>>> queue.popleft()Traceback (most recent call last): File "<stdin>", line 1, in <module>IndexError: pop from an empty deque

Page 17: Python Pilas y Colas

Listas por Comprensión (List Comprehensions )

>>> squares = []>>> for x in range(10):... squares.append(x**2)...>>> squares[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Las listas por comprensión proporcionan una manera concisa para crear listas. Las aplicaciones más comunes son para hacer nuevas listas donde cada elemento es el resultado de algunas operaciones aplicadas a cada miembro de otra secuencia o repetible, o para crear una sub secuencia de aquellos elementos que cumplan una determinada condición.

Page 18: Python Pilas y Colas

Listas por Comprensión (List Comprehensions )

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

ejemplo de lista por Comprensión:

>>> combs = [] >>> for x in [1,2,3]: … for y in [3,1,4]: … if x != y: … combs.append((x, y))

... >>> combs

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

es equivalente a:

Page 19: Python Pilas y Colas

Listas por Comprensión (List Comprehensions )

ejemplo de lista por Comprensión:

>>> from math import pi>>> [str(round(pi, i)) for i in range(1, 6)]['3.1', '3.14', '3.142', '3.1416', '3.14159']

Page 20: Python Pilas y Colas

• Métodos para Pilas (Stack) sobre Stack (Estos son algunos de los más usados e importantes)

• Push• Pop• Peek• Size• Get• Set• Search• Print <pila>;

• Métodos para Colas (Queue) sobre LinkedList• AddFirst• RemoveLast• PeekLast => Front• Size• Get• Set• Print <cola>;

Resumen

Page 21: Python Pilas y Colas

Gracias

Python es Marca y Propiedad de Python Software Foundation. Todos los derechos reservados.

Microsoft Windows y Microsoft Power Point son Marca y Propiedad de Microsoft Corporation. Todos los derechos reservados.

Presentación realizada con productos originales Microsoft.