Articles of funcional programación

Usando recursión con mapa en python

Estoy tratando de aprender conceptos de progtwigción funcional. Un ejercicio, aplanar una lista anidada usando map / reduce. Mi código. lists = [ 1 , 2 , [ 3 , 4, 5], 6, [7, 8, 9] ] def flatten(lists): return map(lambda x: flatten(x) if isinstance(x,list) else x, lists) print flatten(lists) Me sale de salida igual […]

Lambdas dentro de la lista de comprensiones.

Quería tener una lista de lambdas que actúan como una especie de caché para algunos cálculos pesados ​​y noté esto: >>> [j() for j in [lambda:i for i in range(10)]] [9, 9, 9, 9, 9, 9, 9, 9, 9, 9] A pesar de que >>> list([lambda:i for i in range(10)]) [<function at 0xb6f9d1ec>, <function at […]

¿Cómo escribir esta expresión funcionalmente?

Quiero reescribir el siguiente código de python funcionalmente: lst = [0.0] * 10 for pos in [2,5]: lst[pos] = 1.0 Este es mi bash, pero es incorrecto: lst = (lambda zeros: map( lambda pos: zeros[pos] = 1.0, [2,5]) )([0.0] * 10) El error que recibo es lambda cannot contain assignment . Usando la lista de […]

Uso doble confuso de la notación de asterisco de Python (como un argumento de función, o como una definición de función)

Estoy un poco confundido. Vamos a crear una función llamada x. Sé que al poner * antes de la y, esto significa que podemos agregar tantos argumentos como queramos. def x(*y): return y Sin embargo. Caso 1: >>> x(1, 2) (1, 2) Caso 2: Pasemos una lista [1,2] con un asterisco delante de ella: >>> […]

El mapa no funciona como se espera en Python 3

Newbie aquí. Este código funcionó en Python 2.7, pero no en 3.3. def extractFromZipFiles(zipFiles, files, toPath): extractFunction = lambda fileName:zipFiles.extract(fileName, toPath) map (extractFunction,files) return No hay error pero los archivos no se extraen. Sin embargo, cuando sustituyo con for loop funciona bien. def extractFromZipFiles(zipFiles, files, toPath): for fn in files: zipFiles.extract(fn, toPath) # extractFunction = […]

Usando ‘reducir’ en una lista de diccionarios

Estoy intentando escribir una función Python simple que sum todos los valores que tienen la clave como “me gusta” . Estoy trabajando con la progtwigción funcional para esta tarea. Por lo tanto, estoy obligado a usar una lista-comprensión , map , filter o reduce . En este caso, veo reducir como una opción razonable. def […]

Función conjunta realizada en estilo funcional.

Recientemente, al leer el “CÓMO de progtwigción funcional” de Python, encontré un módulo estándar mencionado test_generators.py , donde encontré el siguiente generador: # conjoin is a simple backtracking generator, named in honor of Icon’s # “conjunction” control structure. Pass a list of no-argument functions # that return iterable objects. Easiest to explain by example: assume […]

Cómo iterar a través de las funciones de un módulo

Tengo esta llamada de función después de importar foo.py. Foo tiene varios métodos que necesito llamar, por ejemplo, foo.paint, foo.draw: import foo code if foo: getattr(foo, ‘paint’)() Necesito usar un bucle while para llamar e iterar a través de todas las funciones foo.paint, foo.draw, etc. ¿Cómo lo hago?

Función recursiva de Python para mostrar todos los subconjuntos de un conjunto dado

Tengo la siguiente función de python para imprimir todos los subconjuntos de una lista de números: def subs(l): if len(l) == 1: return [l] res = [] for sub in subs(l[0:-1]): res.append(sub) res.append([l[-1]]) res.append(sub+[l[-1]]) return res li = [2, 3, 5, 8] print(subs(li)) Esto devuelve: [[2], [8], [2, 8], [5], [8], [5, 8], [2, 5], […]

Aplicar lista de funciones en un objeto en Python

¿Hay alguna forma clara de aplicar una lista de funciones en un objeto en Python sin lambda o enumeración de listas? Como la expresión de Haskell: map ($ obj) [foo1,foo2] Ejemplo con lambda en Python: response = map(lambda foo:foo(obj),[foo1,foo2]) #fooX:object->Bool ¿Es extensible a las funciones de clase? Tal vez algo del operador o itertools?