Foros del Web » Programando para Internet » Python »

Entender lambda argumentos - expresiones

Estas en el tema de Entender lambda argumentos - expresiones en el foro de Python en Foros del Web. Buenos días, Gracias de antemano. Estoy empezando con Python y aunque vengo de programar en otros lenguajes y sobre todo en PL/SQL, no consigo entender ...
  #1 (permalink)  
Antiguo 29/05/2016, 08:18
 
Fecha de Ingreso: mayo-2016
Mensajes: 1
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Entender lambda argumentos - expresiones

Buenos días,

Gracias de antemano.

Estoy empezando con Python y aunque vengo de programar en otros lenguajes y sobre todo en PL/SQL, no consigo entender ciertas cosas. Necesito de vuestra ayuda para entender la función lambda sobre todo, que correlación hay entre los parámetros y los campos del RDD sobre el que se ejecuta la acción.

Sobre todo, mi problema lo encuento cuando sales de los ejemplos que hay de listas sencillas y me meto en problemas con ficheros donde cada linea del fichero que cargo en el RDD tiene 6 campos, por ejemplos.

En el ejemplo de workcount.py puedo entender que map(lambda x: (x, 1)) me crea pares clave, 1 pero, esa "x" a donde apunta?
Entiendo que después del map, hacemos reduce para sumar los unos por cada clave. En el ejemplo aparece así: reduceByKey(lambda x, y: x + y) a lo que yo entiendo que la "x" es la clave y la "y" la lista de valores pero entonces... ¿me está sumando clave+lista de 1s?

Me pierdo un poco

Muchas gracias!
zontxo.
  #2 (permalink)  
Antiguo 30/05/2016, 07:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Entender lambda argumentos - expresiones

lambda es solamente una forma de crear una función sin nombre (lo haces cuando son operaciones cortas de una línea)
Código Python:
Ver original
  1. map(lambda x: (x,1), mi_lista)
es equivalente a
Código Python:
Ver original
  1. def mi_funcion(x):
  2.     return (x, 1)
  3.  
  4. map(mi_funcion, mi_lista)

En ambos casos map() devuelve una nueva lista cuyos elementos son el resultado de aplicar la función a cada elemento de mi_lista, por ejemplo:
Código Python:
Ver original
  1. mi_lista = [1, 2, 3]
  2. map(mi_funcion, mi_lista) #crea la lista [(1, 1), (2, 1), (3, 1)]
En el ejemplo de reduce, la función es equivalente a
Código Python:
Ver original
  1. def mi_funcion(x, y):
  2.     return x + y

Lo que hace reduce() es acumular el resultado de la operación que le pasas:
Código Python:
Ver original
  1. reduce(mi_funcion, mi_lista) # devuelve 6, el resultado de sumar los primeros dos elementos de la lista (1 y 2), y luego al resultado sumarle el elemento siguiente (3)


Espero que sea eso lo que causaba tu duda, si aún no queda claro, pregunta.


Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:34.