Estructuras de Datos en Python

Slides:



Advertisements
Presentaciones similares
Sistemas de ecuaciones lineales con un parámetro Discute y resuelve:
Advertisements

Modelado de sistemas software: Introducción. Modelado de... Sistemas... Sistemas web Sistemas de control/tiempo real Familias de sistemas Variabilidad.
Universidad de Costa Rica Cálculo de Almacenamiento Adm. De Bases de Datos Bach.German Olivares G.
¡BIENVENIDOS! PROF. CARLOS JOSÉ LUIS CARRILLO PÉREZ.
Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.
Curso de programación Visual Chart 6 (1ªEd.) SALIDAS CON 2 OBJETIVOS DE GANANCIA.
PERCENTILES, CUARTILES Y DECILES. Un percentil es una de las llamadas medidas de posición no central (cuartiles, deciles, percentiles, etc) que se puede.
Calculadora programada con Scratch
Introducción a la Programación Multimedial
Áreas: Mide tu ingenio Estás listo? B A
Un poco de lo que se de WORD
Programación en C - manejo de Archivos
Curso Computación-Tecnología Médica
Griselda Rosas Informática Lic. CINTHYA P. BELMONTES GUEVARA
Diseño y Programación Orientada a Objetos
Métodos y parámetros.
Clase 17: Arreglos de Objetos
Ejercicio 2 /python José A. Mañas
Estructuras de Datos Recursividad.
Paul Leger Procesos Paul Leger
Apuntes 2º Bachillerato C.S.
ADMINISTRACION DE LA MEMORIA
Convergencia de variables aleatorias
MATRICES U.D. 1 * 2º Angel Prieto Benito
Matrices rango de una matriz
Diccionarios y Colecciones
#crear diccionario con items nombre:[fono,...] D=dict() #leer lineas de agenda.txt for linea in open("agenda.txt"): #recuperar.
Algunas consideraciones con Redes Neuronales
FUINCION IF (SI) EN EXCEL
TALLER Nº2: Modelo de Distribución de Viajes
MATLAB 6.5 Clase 3: Funciones básicas e Introducción a la Programación
TÓPICOS AVANZADOS DE PROGRAMACIÓN
Certificado de Hacking Ético Experto(Chee)
PROGRAMACION LINEAL UNIVERSIDAD LIBRE 2016
Ayudantía 3: Procesos y threads
ESMERALDA LIMÓN ESCUTIA AURORA MENDOZA PASTRANA RUTH LÓPEZ muñoz I.S.C
Curso de iniciación al trabajo con MatLab 7.0
HISTORIA El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el.
Psi. Carlos E. Pérez Flores Noviembre 12 del 2013
Paul Leger Funciones Paul Leger
ARRAYS Y COLECCIONES DE DATOS
Algoritmos de reemplazo
TEMA 1.- INTRODUCCIÓN A LA INFERENCIA
Sistemas Numéricos 1. Introducción 2. Sistema de Numeración Decimal
Estructuras de datos y Bases de datos
TEMA 1.- INTRODUCCIÓN A LA INFERENCIA
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
En la Ciudad de México.
Excel Macros Macros Automáticas.
TRABAJO PRACTICO LABORATORIO REMOTO
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
TRABAJO PRACTICO LABORATORIO REMOTO
Diccionarios y Colecciones
MC Beatriz Beltrán Martínez Verano 2018
Características Objeto Relacionales en Oracle
Árboles Binarios Estructuras de Datos.
Nota: Cuenta con 10min ininterrumpidos de presentación, seguido de máximo 10min de preguntas y respuestas. La sesión de preguntas y respuestas es muy importante,
Nelson Baloian, José A. Pino
CC 1002: Introducción a la Programación Clase 19
Carlos Manuel Ortega Avila
TEMARIO DEFINICIÓN ………………………………………………………..………..

1,2,3,4,5,6,7,8,9 Siempre 24. 1,2,3,4,5,6,7,8,9 Cuando vamos en automóvil, podemos ver la matricula del coche de adelante. Utilizando los números de la.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Variables, Expresiones y Enunciados
Organización del caché
Francisco García Barrios
2. PRINCIPIOS BASICOS DE MICROSOFT ACCESS. -Sistema que tiene la capacidad de realizar tareas de distinta índole utilizando herramientas que interactúan.
Clase1: lectura/escritura/asignación
Ordenación Por Inserción
Transcripción de la presentación:

Estructuras de Datos en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010

Matrices Sistemas Operativos 1 Año 2010

Matrices Idea para implementarlas en Python: Diccionario de Diccionarios Motivo: Eficiencia (solo se guarda en memoria la info. utilizada) Fácil utilización Sistemas Operativos 1 Año 2010

Matrices - Implementación class Matrix: def __init__(self, size): self.matrix = {} self.length = size for column in range(size): self.matrix[column] = {} El for pone un diccionario dentro de otro la cantidad de veces igual al tamaño. Sistemas Operativos 1 Año 2010

Matrices – Implementación - poner Forma de agregar datos a la matriz: def put(self, i, j, elem): if (i < self.length): self.matrix[i][j] = elem Este método coloca el elemento deseado en la columna (i), fila (j). Sistemas Operativos 1 Año 2010

Matrices – Implementación - poner Problema de este método: Dificil llenado de la matriz Solución: - Creación de un método que pueda llenar la matriz por filas o columnas. Sistemas Operativos 1 Año 2010

Matrices – Implementación - agregarFila def addRow(self, j, row): for i in self.length: self.put(i, j, row[i]) Parámetro row: - Es un diccionario. Precondición: - Tamaño de la fila pasada = tamaño del ancho de la matriz. Sistemas Operativos 1 Año 2010

Matrices – Implementación - agregarColumna def addColumn(self, i, column): for j in self.heigth(): self.put(i, j, column[j]) if (i >= self.length): self.length = i+1 def heigth(self): if (self.length == 0): return 0 else: return len(self.matrix[0]) Sistemas Operativos 1 Año 2010

Matrices – Implementación - auxiliares Para ver columnas o filas enteras: def getColumn(self, i): if (i < self.length): return self.matrix[i] def getRow(self, j): resultDic = {} if (j in self.matrix[0]): for i in self.matrix: resultDic[i] = self.matrix[i][j] return resultDic Uso: - Futura comparación entre diccionarios. Sistemas Operativos 1 Año 2010

Semáforos Sistemas Operativos 1 Año 2010

Semáforos - introducción Problema de una estructura no ThreadSafe: No podemos manejarla con más de un Thread. Solución: Usar herramientas ThreadSafe ¿Como podemos implementarlas?: - Utilizando Semáforos. Sistemas Operativos 1 Año 2010

Semáforos ¿Cómo son los semáforos?: Estructura simple, solo guardan un número. Funcionamiento: Si el número está en cero, los Threads que quieran obtener permiso van a tener que esperar. Se el número es mayor a cero, el Thread obtiene permiso. Los Threads que empiezan a trabajar decrementan el valor del semáforo. Los Threads que terminan de trabajar incrementan el valor del semáforo. Sistemas Operativos 1 Año 2010

Semáforos Binarios Características: - Semáforos que empiezan con su valor en 1. Solo un Thread a la vez va a obtener permisos. - Mismo Funcionamiento y estructura que los no binarios. Sistemas Operativos 1 Año 2010

Semáforos – Utilización en Python Para empezar, importar lo siguiente: from threading import Semaphore Instanciación de forma sensilla: - semaforo = Semaphore(1) El número 1 indica que es binario. Se puede instanciar con un número mayor. No se puede instanciar un semáforo con valor < cero. Sistemas Operativos 1 Año 2010

Estructura ThreadSafe - Implementación Ejemplo de utilización de un semáforo: class ThreadSafeList(): def __init__(self, list = []): self.semaphore = Semaphore(1) self.list = list Sistemas Operativos 1 Año 2010

Estructura ThreadSafe - Implementación Próximos pasos: Creación de métodos ThreadSafe en la lista. Utilizamos acquire() para decrementar el valor del semáforo. Utilizamos release() para incrementar el valor del semáforo. Sistemas Operativos 1 Año 2010

Estructura ThreadSafe - Implementación Ejemplo de utilización de los métodos del semáforo: def append(self, elem): # Adquirimos el Semáforo. self.semaphore.acquire() # Accedemos a la Estructura de forma segura. self.list.append(elem) # Liberamos el Semáforo. self.semaphore.release() Carácteristicas del método: - Solo 1 Thread a la vez podrá agregar elementos en la lista. Sistemas Operativos 1 Año 2010

Estructura ThreadSafe - Implementación Otro ejemplo: def remove(self, index): self.semaphore.acquire() self.list[index:index+1] = [] self.semaphore.release() Características del método: - Solo 1 Thread a la vez podrá remover elementos en la lista. Sistemas Operativos 1 Año 2010

Fin Sistemas Operativos 1 Año 2010