SlideShare una empresa de Scribd logo
1 de 21
Aprendiendo Python
Estructuras de Datos
Por Juan Astudillo
TDA: Tipos Abstractos de Datos
Pilas, Colas, Listas por Comprensión
(Stack & Queue)
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).
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).
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.
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.
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.
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.
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)
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).
Pilas (Stacks)
Pilas (Stacks)
Programa en Python que muestra el comportamiento de LIFO
Utlizamos el datatype “List” y algunos métodos para ocuparlo como stack
Type "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()
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.
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ó.
Colas (Queue)
Ejemplo Visual de Cola
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
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.
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:
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']
• 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
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.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Colas
ColasColas
Colas
 
Tema4 programación generica
Tema4   programación genericaTema4   programación generica
Tema4 programación generica
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Operaciones entre lenguajes
Operaciones entre lenguajesOperaciones entre lenguajes
Operaciones entre lenguajes
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
17 arreglos bidimensionales java
17 arreglos bidimensionales java17 arreglos bidimensionales java
17 arreglos bidimensionales java
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 
Pilas
PilasPilas
Pilas
 
Insertar elementos en una cola
Insertar elementos en una colaInsertar elementos en una cola
Insertar elementos en una cola
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de prueba
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 

Similar a Python Pilas y Colas

Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasMaxDLeon
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnaskety24
 
Listas,pilas y colas
Listas,pilas y colasListas,pilas y colas
Listas,pilas y colasBlackzerox
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130reyarturo16
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasJose R. Trejo
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Estructura de Datos Pilas, Colas y Listas
Estructura de Datos Pilas, Colas y ListasEstructura de Datos Pilas, Colas y Listas
Estructura de Datos Pilas, Colas y Listaschristgch
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datosJosé Braganza
 
Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.christgch
 

Similar a Python Pilas y Colas (20)

Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Listas,pilas y colas
Listas,pilas y colasListas,pilas y colas
Listas,pilas y colas
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Estructura de Datos Pilas, Colas y Listas
Estructura de Datos Pilas, Colas y ListasEstructura de Datos Pilas, Colas y Listas
Estructura de Datos Pilas, Colas y Listas
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datos
 
Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.
 

Más de Juan Astudillo

Petya / Petrwrap / NoPetya
Petya / Petrwrap / NoPetyaPetya / Petrwrap / NoPetya
Petya / Petrwrap / NoPetyaJuan Astudillo
 
Mejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelMejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelJuan Astudillo
 
Ransonware: introducción a nuevo Virus Informático
Ransonware: introducción a nuevo Virus InformáticoRansonware: introducción a nuevo Virus Informático
Ransonware: introducción a nuevo Virus InformáticoJuan Astudillo
 
JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2Juan Astudillo
 
Introducción a la Medición de Sistemas (Moore y Amdhal)
Introducción a la Medición de Sistemas (Moore y Amdhal)Introducción a la Medición de Sistemas (Moore y Amdhal)
Introducción a la Medición de Sistemas (Moore y Amdhal)Juan Astudillo
 
Comandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteComandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteJuan Astudillo
 
Limpiar Windows, Internet Explorer y Chrome
Limpiar Windows, Internet Explorer y ChromeLimpiar Windows, Internet Explorer y Chrome
Limpiar Windows, Internet Explorer y ChromeJuan Astudillo
 
Acercamiento a BPMN - Instalacion y configuracion Bonita
Acercamiento a BPMN - Instalacion y configuracion BonitaAcercamiento a BPMN - Instalacion y configuracion Bonita
Acercamiento a BPMN - Instalacion y configuracion BonitaJuan Astudillo
 
Control de Aplicaciones - Hacking Corporativo - Auditoria Computacional
Control de Aplicaciones - Hacking Corporativo - Auditoria ComputacionalControl de Aplicaciones - Hacking Corporativo - Auditoria Computacional
Control de Aplicaciones - Hacking Corporativo - Auditoria ComputacionalJuan Astudillo
 
Java Arreglos y Matrices
Java Arreglos y MatricesJava Arreglos y Matrices
Java Arreglos y MatricesJuan Astudillo
 
Comandos Powershell para Sharepoint 2010
Comandos Powershell para Sharepoint 2010Comandos Powershell para Sharepoint 2010
Comandos Powershell para Sharepoint 2010Juan Astudillo
 
Activación servicios Windows para replicación MSSQL Server 2005
Activación servicios Windows para replicación MSSQL Server 2005 Activación servicios Windows para replicación MSSQL Server 2005
Activación servicios Windows para replicación MSSQL Server 2005 Juan Astudillo
 
Instalación y configuración Mysql Xampp
Instalación y configuración Mysql XamppInstalación y configuración Mysql Xampp
Instalación y configuración Mysql XamppJuan Astudillo
 
Instalación y configuración Mysql Server Federado 5.5.33
Instalación y configuración Mysql Server Federado 5.5.33Instalación y configuración Mysql Server Federado 5.5.33
Instalación y configuración Mysql Server Federado 5.5.33Juan Astudillo
 

Más de Juan Astudillo (18)

Introducción a Scrum
Introducción a ScrumIntroducción a Scrum
Introducción a Scrum
 
Petya / Petrwrap / NoPetya
Petya / Petrwrap / NoPetyaPetya / Petrwrap / NoPetya
Petya / Petrwrap / NoPetya
 
Mejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelMejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft Excel
 
Ransonware: introducción a nuevo Virus Informático
Ransonware: introducción a nuevo Virus InformáticoRansonware: introducción a nuevo Virus Informático
Ransonware: introducción a nuevo Virus Informático
 
JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2
 
Introducción a la Medición de Sistemas (Moore y Amdhal)
Introducción a la Medición de Sistemas (Moore y Amdhal)Introducción a la Medición de Sistemas (Moore y Amdhal)
Introducción a la Medición de Sistemas (Moore y Amdhal)
 
Java & Strings
Java & StringsJava & Strings
Java & Strings
 
Java y Matematicas
Java y MatematicasJava y Matematicas
Java y Matematicas
 
Comandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteComandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSite
 
Limpiar Windows, Internet Explorer y Chrome
Limpiar Windows, Internet Explorer y ChromeLimpiar Windows, Internet Explorer y Chrome
Limpiar Windows, Internet Explorer y Chrome
 
Acercamiento a BPMN - Instalacion y configuracion Bonita
Acercamiento a BPMN - Instalacion y configuracion BonitaAcercamiento a BPMN - Instalacion y configuracion Bonita
Acercamiento a BPMN - Instalacion y configuracion Bonita
 
Control de Aplicaciones - Hacking Corporativo - Auditoria Computacional
Control de Aplicaciones - Hacking Corporativo - Auditoria ComputacionalControl de Aplicaciones - Hacking Corporativo - Auditoria Computacional
Control de Aplicaciones - Hacking Corporativo - Auditoria Computacional
 
Java Arreglos y Matrices
Java Arreglos y MatricesJava Arreglos y Matrices
Java Arreglos y Matrices
 
Comandos Powershell para Sharepoint 2010
Comandos Powershell para Sharepoint 2010Comandos Powershell para Sharepoint 2010
Comandos Powershell para Sharepoint 2010
 
Introduccion a Java
Introduccion a JavaIntroduccion a Java
Introduccion a Java
 
Activación servicios Windows para replicación MSSQL Server 2005
Activación servicios Windows para replicación MSSQL Server 2005 Activación servicios Windows para replicación MSSQL Server 2005
Activación servicios Windows para replicación MSSQL Server 2005
 
Instalación y configuración Mysql Xampp
Instalación y configuración Mysql XamppInstalación y configuración Mysql Xampp
Instalación y configuración Mysql Xampp
 
Instalación y configuración Mysql Server Federado 5.5.33
Instalación y configuración Mysql Server Federado 5.5.33Instalación y configuración Mysql Server Federado 5.5.33
Instalación y configuración Mysql Server Federado 5.5.33
 

Python Pilas y Colas

  • 1. Aprendiendo Python Estructuras de Datos Por Juan Astudillo
  • 2. TDA: Tipos Abstractos de Datos Pilas, Colas, Listas por Comprensión (Stack & Queue)
  • 3. 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).
  • 4. 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).
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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)
  • 10. 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).
  • 12. Pilas (Stacks) Programa en Python que muestra el comportamiento de LIFO Utlizamos el datatype “List” y algunos métodos para ocuparlo como stack Type "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()
  • 13. 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.
  • 14. 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ó.
  • 16. 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
  • 17. 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.
  • 18. 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:
  • 19. 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']
  • 20. • 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
  • 21. 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.