Documentos de Académico
Documentos de Profesional
Documentos de Cultura
mode=python
1 # Programacion imperativa
2 enteros = [1,2,3,4,5,6]
3 '''
4 lista los números pares de la lista enteros
5 '''
6 lista_de_pares = []
7 for numero in enteros:
8 if numero%2 == 0:
9 lista_de_pares.append(numero)
10
11 print(lista_de_pares)
12 # Como podemos ver en el ejemplo anterior, mediante programación imperativa vamos
creando una serie de variables, modificando su estado y obteniendo un resultado.
13 #Ahora vamos a hacer lo mismo con programación funcional.
14 '''
15 lista los números pares de la lista enteros
16 '''
17 lista_de_pares = list(filter(lambda numero: numero%2 ==0, enteros))
18 print(lista_de_pares)
19
20 # Función lambda
21
22 #lambda num: num%2 == 0
23 # ^ ^
24 # argumento Cuerpo de la función
25
26 # A las lambdas se les pueden pasar varios parametros
27 import random
28 suma = lambda op1, op2: op1 + op2
29 numero_aleatorio = lambda x: random.randrange(x)
30 suma(numero_aleatorio(100),34)
31
32 # Tambien se le pueden pasar un numero indefinido de args
33
34 elevar_al_cuadrado = lambda *args: [num**2 for num in args] # con lista de
comprension
35 elevar_al_cuadrado(1,2,3,4) # -> [1, 4, 9, 16]
36
37 valores = [1,2,3,4,5,6]
38 numeros_pares = [ num for num in valores if num%2 == 0] # -> [2, 4, 6]
39 numeros_pares = [num if num%2 == 0 else 0 for num in valores] # -> [0, 2, 0, 4, 0, 6]
40
41 # Capitalizar un nombre
42 # Añadir sr al principio
43 capitalizar = lambda nombre: nombre[0].upper() + nombre[1:] # nombre.capitalize()
44 annadir_sr = lambda x: 'Sr. ' + x
45 saludar = lambda nombre: annadir_sr(capitalizar(nombre))
46 saludar('pablo') # -> 'Sr. Pablo'
47
48 # prog imperativa
49 def capitalizar(nombre):
50 return nombre.capitalize()
51
52 def annadir_sr(nombre):
53 return 'Sr. ' + nombre
54
55 def saludar(nombre):
56 nombre = capitalizar(nombre)
57 return annadir_sr(nombre)
58
1 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
2 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
3 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
4 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
227
228 from functools import reduce
229
230 '''
231 Cuenta el número de elementos de un iterable que cumplan una condición.
232 '''
233 numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
234 contador = reduce(lambda x, y: x + 1 if y > 5 else x, numeros, 0) # valores mayores a
5
235 print(contador) # 5
236
237 # FUNCION PARTIAL
238 from functools import partial
239 '''
240 La función partial() en Python se encuentra en el módulo functools y se utiliza para
crear
241 una versión parcial de una función existente con algunos de sus argumentos
predefinidos.Cuando se utiliza partial(),
242 se especifica una función y se proporcionan valores para algunos de sus argumentos.
La función devuelta por partial()
243 se puede llamar posteriormente con los argumentos restantes para completar la llamada
a la función original.
244 '''
245 # Dada una lista de números, si es par suma 2, si es impar suma 10
246
247 suma = lambda op1,op2: op1 + op2
248 multiplica = lambda op1,op2: op1 * op2
249
250 suma_2 = partial(suma,2)
251 suma_10 = partial(suma,op2=10)
252 lista_numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
253
254
255 lista_procesada = list(map(lambda x: suma_2(x) if x%2==0 else suma_10(x) ,
lista_numeros ))
256 lista_procesada # -> [11, 4, 13, 6, 15, 8, 17, 10, 19, 12]
257
258 # 1. Data una lista de cadenas obtener una lista de cadenas en mayúsculas
259 lista_cadena=['a','b','c']
260 mayu= lambda x : x.upper()
261 list(map(mayu,lista_cadena)) # -> ['A', 'B', 'C']
262 '''
263 # 1. Data una lista de cadenas obtener una lista de cadenas en mayúsculas
264 entrada = ['hola', 'adios', 'buenas', 'tardes']
265 print(list(map(lambda x: x.upper(), entrada)))
266 '''
267 # 2. Dada una lista de alumnos con sus calificaciones,
268 # obtener una lista con el nombre de los que han obtenido una calificación media
mayor a 7
269 entrada = [ {'nombre': 'Juan','calificaciones': [10, 9, 6]},{'nombre':
'Pedro','calificaciones': [8, 7, 5]},
270 {'nombre': 'Maria','calificaciones': [9, 8, 7]},{'nombre':
'Juana','calificaciones': [3,6,4]},
271 {'nombre': 'Jorge','calificaciones': [10, 10, 10]},{'nombre':
'Pablo','calificaciones': [2, 0, 1]},
272 {'nombre': 'Pilar','calificaciones': [5,6,6] }]
273 for diccionario in entrada:
274 lista=[]
275 calificaciones = diccionario['calificaciones']
276 media= diccionario['calificaciones']
5 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
277 media=np.array(media).mean()
278 if media.mean() >7:
279 lista.append(diccionario['nombre'])
280
281
282 promedio = lambda x: sum(x['calificaciones']) / len(x['calificaciones'])
283 nombre = lambda x: x['nombre']
284
285 notables = list(map(lambda alumno: nombre(alumno) ,filter(lambda x: promedio(x) > 7,
entrada)))
286
287 # 3. Dada una lista de palabras, obtener una lista con las palabras que son
palíndromos
288 # palíndromo: una palabra que se lee de izquierda a derecha igual que de derecha a
izquierda
289 palabras = ['rajar', 'amar', 'radar', 'salar', 'alada', 'oro', 'arar']
290 palindromo= lambda palabra: palabra[::-1]==palabra
291 palabra=list(filter(palindromo,palabras))
292 palindromos = list(filter(lambda x: x == x[::-1], palabras)) # todas las posiciones
con paso -1
293
294 # 4. Define una función que dado un valor genere una lista con los números desde 1
hasta ese valor elevados al cuadrado
295
296 def cuadrado(numero):
297 lista=[]
298 for i in range(numero+1):
299 lista.append(i**2)
300 return lista
301 cuadrado(5)
302 cuadrados = lambda x: list(map(lambda y: y ** 2, range(1,x+1)))
303 cuadrados(5)
304
305 # 5. Define una función que devuelva las palabras mayores de 5 letras
306 palabras = ['HTML', 'CSS', 'JavaScript', 'Python', 'Ruby', 'PHP', 'SQL', 'Java',
'Swift', 'Objective-C' ]
307 longitud_mayor_5 = list(filter(lambda x: len(x) > 5, palabras))
308 print(longitud_mayor_5)
309
310 # 6. Define una función que retorne las palabras de una lista que contengan una letra
dada
311 palabras = ['HTML', 'CSS', 'JavaScript', 'Python', 'Ruby', 'PHP', 'SQL', 'Java',
'Swift', 'Objective-C' ]
312 contiene_letra = lambda letra, listado: list(filter(lambda x: letra in x, listado))
313 contiene_letra('a', palabras)
314
315 # 7. Define una función que dada una lista de palabras contatene todas con un '|'
mediante reduce
316 palabras = ['HTML', 'CSS', 'JavaScript', 'Python', 'Ruby', 'PHP', 'SQL', 'Java',
'Swift', 'Objective-C' ]
317 concatenadas = reduce(lambda acumulador, palabra: acumulador + '|' + palabra,
palabras)
318 concatenadas
319
320 '''
321 -----------------------
322 | | | |
323 | 1 | 2 | 3 |
324 | a b c | d e f | g h i |
325 -----------------------
6 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
326 | | | |
327 | 4 | 5 | 6 |
328 | j k l | m n o | p q r |
329 -----------------------
330 | | | |
331 | 7 | 8 | 9 |
332 | s t u | v w x | y z |
333 -----------------------
334
335 ejemplo:
336 3541 => hola
337 57525 => mundo
338 11455 => cajón, bajón, balón
339 Definir una función que dado un número, devuelva una lista con las palabras que se
pueden escribir en ese número
340 '''
341 teclado = { 'abc': 1, 'def': 2, 'ghi': 3, 'jkl': 4, 'mno': 5, 'pqr': 6, 'stu': 7,
'vwx': 8, 'yz': 9 }
342
343 letra_a_numero = lambda letra: str([teclado[key] for key in teclado.keys() if letra
in key][0])
344 version_numeral = lambda palabra: ''.join(list(map(letra_a_numero, palabra)))
345
346 valores = ['hola', 'mundo', 'cajon', 'bajon', 'balon', 'melon']
347
348 palabras_en_numero = lambda numero, palabras: [ palabra for palabra in palabras if
version_numeral(palabra) in str(numero) ]
349 #------------------------------------------------------------------------------------
---------------------------------------
350 cuadrados = [x**2 for x in range(1, 6)]
351
352 palabras = ["hola", "mundo", "python", "listas", "comprension"]
353 longitudes = [len(palabra) for palabra in palabras]
354 # Resultado: [4, 5, 6, 6, 12]
355
356 numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
357 pares = [x for x in numeros if x % 2 == 0]
358 # Resultado: [2, 4, 6, 8, 10]
359
360 # sintasix listas compresion --> nueva_lista = [expresion for elemento in
secuencia if condicion]
361 '''
362 Donde:
363
364 nueva_lista: es la lista resultante que se va a crear.
365 expresion: es una expresión que define cómo se va a modificar
cada elemento de la secuencia original para crear los elementos de la nueva lista.
366 elemento: es una variable que representa cada elemento de la
secuencia original.
367 secuencia: es una secuencia iterable, como una lista, tupla,
rango, etc.
368 condicion (opcional): es una condición que se evalúa para cada elemento de la
secuencia original. Solo los elementos que cumplan esta condición se incluirán en la
nueva lista.
369 '''
370
371 # Una función lambda en Python puede devolver cualquier tipo de expresión válida en
Python. Algunos ejemplos de expresiones comunes que puede devolver una función lambda
son
372 # Un valor numérico:
7 de 8 20/06/2023, 15:50
Repaso Programacion FUNCINAL.ipynb http://localhost:4649/?mode=python
8 de 8 20/06/2023, 15:50