Ver Mensaje Individual
  #20 (permalink)  
Antiguo 07/01/2010, 00:28
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: FAQ's de Python

Pregunta: ¿Como utilizar map, filter y reduce?
Respuestas:

map(función, iterable, ...)
Aplica función a cada objeto de iterable y regresa una lista con los resultados.
Ejemplo:
Código Python:
Ver original
  1. def funct(x):
  2.     #Regresa el cuadrado de un numero
  3.     return x ** 2
  4.  
  5. l = range(10)
  6. #l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  7.  
  8. l2 = map(funct, l)
  9. #l2 = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

map(funct, l) es equivalente al siguiente código usando comprensión de listas:
Código Python:
Ver original
  1. l2 = [ funct(x) for x in l ]

filter(función, iterable, ...)
Construye una lista apartir de esos elementos de iterable para los cuales función regresa verdadero
Ejemplo:
Código Python:
Ver original
  1. def funct(x):
  2.     if(x > 5):
  3.         return True
  4.  
  5. l = range(10)
  6. #l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  7.  
  8. l2 = filter(funct, l)
  9. #l2 = [6, 7, 8, 9]

filter(funct, l) es equivalente al siguiente código usando comprensión de listas:
Código Python:
Ver original
  1. l2 = [ x for x in l if funct(x) ]

reduce(función, iterable, ...)
Aplica función de 2 argumentos acumulativamente a cada elemento de iterable, de izquierda a derecha, así reduce iterable a un solo valor.
Ejemplo:
Código Python:
Ver original
  1. def funct(x, y):
  2.     return x + y
  3.  
  4. l = range(1, 6)
  5. #l = [1, 2, 3, 4, 5]
  6.  
  7. r = reduce(funct, l)
  8. #r = ((((1+2)+3)+4)+5) = 15

*Iterable, llamese lista, string (o cadena), un conjunto (o set), un diccionario, tupla, etc... básicamente cualquier objeto que tenga el metodo __iter__

Para usos mas complejos leer la documentación.

Última edición por AlvaroG; 30/05/2012 a las 07:35 Razón: Editado para agregar versiones equivalentes a map y filter usando comprensión de listas