Python R2


Programación funcional en python

Posted in Python por Arturo Elias Antón en 28 agosto 2008
Tags: , , , ,

Para empezar a entrar en tema podríamos ver la wikipedia

Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos laterales.
Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas).
Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los híbridos. La diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos que los puros, al admitir conceptos tomados de los lenguajes imperativos, como las secuencias de instrucciones o la asignación de variables. En contraste, los lenguajes funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje funcional híbrido.”
[http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional]

Python nos facilita un conjunto de feature  que nos permite darle un enfoque funcional a nuestra programación.  Estos feacture son:

  • map
  • filter
  • reduce
  • lambda
  • listas por comprensión

Map:

La función “map” es una función de orden superior, que recibe en su primer parámetro una función fx y en su segundo parámetro una lista lt. Y lo que hará simplemente es aplicar la función fx a los elementos de la lista lt.
Ejemplo:

#!/usr/bin/python
# Nombre de Fichero : map.py

lt = range(5)
def fx(x):
    return x + 1

print lt
print map (fx,lt)
print lt


Filter
:

La función “filter” es una función de orden superior, que recibe en su primer parámetro una función fx  que retorne true o false y en su segundo parámetro una lista lt. Y lo que hará simplemente es aplicar la función fx a los elementos de la lista lt y retornar una lista con todos los elementos que dieron trae.

Ejemplo:

#!/usr/bin/python
# Nombre de Fichero : filter.py

lt = range(5)
def fx(x):
    return x in (1,3,6)

print lt
print map (fx,lt) #como ya sabemos manejar map
print filter (fx,lt)
print lt

Reduce:

La función “reduce” es una función de orden superior, que recibe en su primer parámetro una función fx y una lista lt. Pero su funcionamiento es menos evidente que “map” y “filter”, ya que lo que devuelve es un solo elemento. Para verlo mas claro veamos el ejemplo.

Ejemplo:

#!/usr/bin/python
# Nombre de Fichero : reduce.py

lt = range(5)
lts = ["hola ","como ","estas."]
def sumatoria(x,y):
    return x+y

print " lt -> %s"%lt
print " lts -> %s" %lts

print " reduce lt  -> %s" %reduce (sumatoria,lt)
print " reduce lts -> %s" %reduce (sumatoria,lts)

print " lt -> %s"%lt
print " lts -> %s" %lts

En las próximas entradas explicaremos listas por comprensión  y lambda.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: