|  | 
|  | 1 | +from datetime import datetime | 
|  | 2 | +from functools import reduce | 
|  | 3 | +''' | 
|  | 4 | +Las funciones de orden superior son funciones que cumplen con al menos | 
|  | 5 | +una de las siguientes características: | 
|  | 6 | +
 | 
|  | 7 | +1. Reciben una o más funciones como argumentos. | 
|  | 8 | +2. Devuelven una función como resultado. | 
|  | 9 | +''' | 
|  | 10 | + | 
|  | 11 | +# ejemplo 1 | 
|  | 12 | +def aplicar_func_sumar(funcion, valor1, valor2): | 
|  | 13 | +    return funcion(valor1, valor2) | 
|  | 14 | +def sumar(x, y): | 
|  | 15 | +    return x + y | 
|  | 16 | +resultado = aplicar_func_sumar(sumar, 5, 8) | 
|  | 17 | +print(resultado) | 
|  | 18 | + | 
|  | 19 | + | 
|  | 20 | +# ejemplo 2 | 
|  | 21 | +def al_cuadrado(): | 
|  | 22 | +    def multiplicador(z): | 
|  | 23 | +        return z * z | 
|  | 24 | +    return multiplicador | 
|  | 25 | +d = al_cuadrado() | 
|  | 26 | +print(d(4)) | 
|  | 27 | + | 
|  | 28 | + | 
|  | 29 | +# ejemplo 3 | 
|  | 30 | +nums = [1,2,3,4,5] | 
|  | 31 | +resultados = list(map(lambda x: x ** 3, nums)) | 
|  | 32 | +print(list(resultados)) | 
|  | 33 | + | 
|  | 34 | + | 
|  | 35 | +# ejemplo 4 | 
|  | 36 | +diccionarios = [{'nombre': 'Ana', 'edad': 25}, {'nombre': 'Juan', 'edad': 22}, {'nombre': 'Luis', 'edad': 30}] | 
|  | 37 | +diccionarios.sort(key=lambda x: x['edad']) | 
|  | 38 | +print(diccionarios)   | 
|  | 39 | + | 
|  | 40 | + | 
|  | 41 | +''' | 
|  | 42 | +EXTRA | 
|  | 43 | +''' | 
|  | 44 | +Estudiantes = [ | 
|  | 45 | +    {"nombre": "Sergio", "nacimiento":"12-07-2005", "calificaciones": [8.0, 10.0, 5.0, 7.0]}, | 
|  | 46 | +    {"nombre": "Javier", "nacimiento":"10-05-2003", "calificaciones": [5.0, 10.0, 4.0, 6.0]}, | 
|  | 47 | +    {"nombre": "Maria", "nacimiento":"07-05-2000", "calificaciones": [10.0, 10.0, 8.0, 9.0]}, | 
|  | 48 | +    {"nombre": "Julia", "nacimiento":"20-01-2002", "calificaciones": [5.0, 4.0, 2.0, 10.0]}, | 
|  | 49 | +    {"nombre": "Julian", "nacimiento": "01-01-2001", "calificaciones": [10.0, 8.0, 10.0, 10.0]} | 
|  | 50 | +] | 
|  | 51 | + | 
|  | 52 | +def promedio(calificaciones): | 
|  | 53 | +    return sum(calificaciones) / len(calificaciones) | 
|  | 54 | + | 
|  | 55 | +promedios = list(map( | 
|  | 56 | +    lambda estudiante: [estudiante['nombre'], promedio(estudiante['calificaciones'])], Estudiantes | 
|  | 57 | +)) | 
|  | 58 | + | 
|  | 59 | +for estudiante in promedios: | 
|  | 60 | +    print(f"{estudiante[0]}: {estudiante[1]}") | 
|  | 61 | + | 
|  | 62 | + | 
|  | 63 | +tops = list(filter(lambda estudiante: promedio(estudiante['calificaciones']) >= 9.0, Estudiantes)) | 
|  | 64 | +top_names = list(map(lambda estudiante: estudiante['nombre'], tops)) | 
|  | 65 | +print(top_names) | 
|  | 66 | + | 
|  | 67 | + | 
|  | 68 | +def dates(date_str): | 
|  | 69 | +    return datetime.strptime(date_str, "%d-%m-%Y") | 
|  | 70 | + | 
|  | 71 | +sorted_students_by_age = sorted(Estudiantes, key=lambda estudiante: dates(estudiante["nacimiento"]), reverse=True) | 
|  | 72 | + | 
|  | 73 | +for student in sorted_students_by_age: | 
|  | 74 | +    print(f"{student['nombre']} - {student['nacimiento']}") | 
|  | 75 | + | 
|  | 76 | +mayor_calificacion = max(Estudiantes, key=lambda estudiante: promedio(estudiante['calificaciones'])) | 
|  | 77 | +print(f"{mayor_calificacion['nombre']} - {sum(mayor_calificacion['calificaciones']) / len(mayor_calificacion['calificaciones'])}") | 
0 commit comments