Logo Studenta

practica9

¡Estudia con miles de materiales!

Vista previa del material en texto

INTRODUCCIÓN A LA PROGRAMACIÓN · ESCUELA DE NEGOCIOS, UTDT · PRIMER SEMESTRE 2021
Guía de Ejercicios 9: Listas por comprensión
Objetivos:
Presentar una forma alternativa y muy conveniente para trabajar con listas conocida como
listas por comprensión (list comprehension), azúcar sintáctica ofrecida en algunos lenguajes
como Python, Haskell, Javascript o Scala.
Conocer e incorporar el uso de las funciones sobre listas max, min, sum, any, all, así como
las expresiones condicionales (EXPRESIÓN1 if CONDICIÓN else EXPRESIÓN2).
Ejercicio 1. Determinar a manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa manoa mano el valor de estas expresiones, donde txt:str = 'este es un
texto muy corto de prueba'. Luego revisar las respuestas en una consola ipython.
(a) [x for x in range(10) if x %3==1]
(b) [(x if x %2==0 else -111) for x in range(10)]
(c) [x for x in txt.split(' ') if len(x)>3]
(d) ' '.join([x+' '+x for x in txt.split()])
(e) ''.join([x for x in txt if x not in 'aeiou'])
Ejercicio 2. Escribir expresiones con listas por comprensión que devuelvan estos valores, tomando
nuevamente como punto de partida range(10) o bien el string txt definido en el Ejercicio 1.
(a) [10, 50, 90]
(b) ['par', 'non', 'par', 'non', 'par', 'non', 'par', 'non', 'par', 'non']
(c) '_st_ _s _n t_xt_ m_y c_rt_ d_ pr__b_'
(d) 'EstE Es Un tExtO mUy cOrtO dE prUEbA'
(e) [4, 2, 2, 5, 3, 5, 2, 6]
Ejercicio 3. Especificar, programar y verificar con testing funciones para resolver los siguientes
problemas. Usar listas por comprensión; no escribir ciclos explícitamente con for o while.
(a) Dada una lista de strings, contar la cantidad total de caracteres. Por ejemplo, para ['tor',
'c','ua','to'] el resultado esperado es 8 (Ejercicio 3(f) de la Guía 4).
(b) Dada una lista de strings, contar la cantidad de veces que aparece la letra 'a'. Por ejemplo,
para ['abba','acdc','bee gees','a-ha'] el resultado esperado es 5 (Ejercicio 3(g) de la
Guía 4).
(c) Dada una lista no vacía de strings, devolver el conjunto formado por los strings más largos
de dicha lista. Por ejemplo, para ['a','abc','','xyz','mn','abc'] el resultado esperado
es {'abc','xyz'}
(d) Devolver el conjunto de claves que tienen máximo valor en un Dict[str,int]. Por ejemplo,
para {'a':10, 'b':14, 'c':9, 'd':14, 'e':7} debe devolver {'b', 'd'} (Ejercicio 12
de la Guía 7).
1
(e) Dada una lista de listas de float, computar el promedio de todas las listas no vacías y de-
volver el máximo de dichos promedios. Como precondición, la lista debe contener al menos
una lista no vacía. Por ejemplo, para [[1.0, 2.0, 3.0], [5.0, 6.0], [], [4.0, 4.0,
4.0]], debe devolver 5.5.
Ejercicio 4. Convertir a ciclos las listas por comprensión usadas en el Ejercicio 3 y estimar su
complejidad algorítmica en el peor caso.
Ejercicio 5. En el Ejercicio 6 de la Guía 8 se construyó una lista de objetos del tipo Provincia.
Escribir listas por comprensión para:
(a) Calcular la población total de Argentina.
(b) Definir las funciones formatear y criterio para que la siguiente expresión devuelva el
listado de provincias que tienen al menos dos millones de habitantes, presentado de esta
manera: Buenos Aires (15M), CABA (2M), ...
print(', '.join([ formatear(p) for p in provincias if criterio(p)]))
Ejercicio 6. La función uniform(a:float, b:float) del módulo random devuelve un float
pseudo-aleatorio entre a y b. Considerar la siguiente función estimar_algo, que supone que el
archivo punto.py contiene la clase Punto definida en el Ejercicio 1 de la Guía 8.
1 from punto import Punto
2 from random import uniform
3
4 def estimar_algo(n:int) -> float:
5 ''' ** COMPLETAR ** '''
6 puntos:List[Punto] = [Punto(uniform (-1.0, 1.0), uniform (-1.0, 1.0))
7 for i in range(n)]
8 origen:Punto = Punto (0.0, 0.0)
9 en_circulo:List[Punto] = [ ** COMPLETAR ** ]
10 est:float = (len(en_circulo) / len(puntos)) * 4.0
11 return est
(a) ¿En qué consiste la lista de puntos construida en las líneas 6 y 7?
(b) Completar la línea 9, de modo que en la lista en_circulo queden solamente los puntos que
están a distancia al origen menor o igual a 1.
(c) ¿Qué es lo que estima esta función? Ejecutarla con valores crecientes de n: 1000, 10000,
etc. Esta técnica se conoce con el nombre de método de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlométodo de Monte Carlo, y es muy usada para
aproximar expresiones matemáticas.
2
https://es.wikipedia.org/wiki/M%C3%A9todo_de_Montecarlo

Continuar navegando

Materiales relacionados

111 pag.
TutorialPython3

SIN SIGLA

User badge image

matica121314

114 pag.
ING1310_-_El_Libro

User badge image

Central de Apuntes

27 pag.
pia-03

UV

User badge image

Mucho Conocimiento

37 pag.
pia-06

UV

User badge image

Mucho Conocimiento