alumnos = ["Ana", "Iu", "Eva", "Victoria", "Ramon"] def ultimaLetra(cadena): return cadena[-1] ordenado = sorted(alumnos) print(ordenado) ordenado = sorted(alumnos, key=len) print(ordenado) ordenado = sorted(alumnos, key=ultimaLetra) print(ordenado) maslargo = max(alumnos, key=len) print(maslargo) maslargo = max(alumnos, key=ultimaLetra) print(maslargo) clase = [ {"nombre": "Ana", "nota": 7}, {"nombre": "Eva", "nota": 3}, {"nombre": "Iu", "nota": 6}, {"nombre": "Luis", "nota": 8}, {"nombre": "Pep", "nota": 5}, ] def getNota(elemento): return elemento["nota"] maslisto = max(clase, key=getNota) print(maslisto) peor = min(clase, key=getNota) print(peor) # Funciones lambda: Son funciones anónimas que se definen al momento # lambda argumentos: expresion que se devuelve maslisto = max(clase, key=lambda x: x["nota"]) print(maslisto) # lo que hace el código de antes es recorrer la lista, obtener la nota de cada elemento # ordenar por ese valor (es decir, por nota) y devolver el que tenga el valor máximo suma_lambda = lambda x, y: x + y print(suma_lambda(3, 4)) pornotas = sorted(clase, key=lambda alumno: alumno["nota"]) print(pornotas) # Hay una función predefinida de python que es 'map' # aplica una función a todos los elementos de un iterable numeros = [1, 2, 3, 4, 5] def cuadrado(x): return x ** 2 cuadrados = list(map(cuadrado, numeros)) print(cuadrados) cuadrados2 = list(map(lambda x: x ** 2, numeros)) print(cuadrados2) aprobados = list(filter(lambda x: x["nota"] >= 5, clase)) print(aprobados) notas = [10, 2, 3, 4, 5, 6, 7, 8, 9] def esPar(numero): return numero % 2 == 0 pares = [] for nota in notas: if esPar(nota): pares.append(nota) print(pares) pares2 = [nota for nota in notas if esPar(nota)] print(pares2) pares3 = list(filter(esPar, notas)) print(pares3) # Reescribir esto sin usar esPar pares = [] for nota in notas: if nota % 2 == 0: pares.append(nota) print(pares) pares2 = [nota for nota in notas if nota % 2 == 0] print(pares2) pares3 = list(filter(lambda nota: nota % 2 == 0, notas)) print(pares3) pedidos = [{"producto": "Libro", "precio": 20}, {"producto": "Lápiz", "precio": 2}, {"producto": "Cuaderno", "precio": 5}, {"producto": "Tablet", "precio": 200}, {"producto": "Funda", "precio": 15}] # pedidos de 20 de precio o más masde20 = [] for pedido in pedidos: if pedido["precio"] >= 20: masde20.append(pedido) print(masde20) masde20b = [pedido for pedido in pedidos if pedido["precio"] >= 20] print(masde20b) masde20c = list(filter(lambda pedido: pedido["precio"] >= 20, pedidos)) print(masde20c)