|
| 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