💛 Hoola ¿Cómo va todo? Tres cosas importantes: 👉 Aquí tenéis el código fuente: github.com/dimas-avila/curso-python 👉 Si os queréis suscribir: th-cam.com/users/dimasmas 👉 Aquí tenéis el curso entero: th-cam.com/play/PLVs9JdE6ZZh112EBnYa_wCxYpbVXEXrLF.html ¿Ya conocíais las funciones lambda? Dejádmelo en los comentarios y os leo!
Hermano, muchas gracias por poner estos ejemplos, son los mejores y más completos que he encontrado. Te ganaste mi suscripción, sigue así! Eres un crack!!!
Hola Dimas. Resolviendo algunas dudas me encontré con esta función lambda: "value = (lambda x: (x % 2 and 'odd' or 'even'))(101)" que retorna si el argumento es 'odd' o 'even'. Me he estado devanando los sesos y no logro comprender como esa sintaxis retorna ese valor. Me podrías ayudar a entender cómo funciona? Gracias
Buenas Rocco, es un poco confuso pero intentaré explicarlo. Vamos por partes: Lo primero, la expresión que comentas "value = (lambda x: (x % 2 and 'odd' or 'even'))(101)" es equivalente a: >>> value = lambda x: (x % 2 and 'odd' or 'even') >>> value(10) 'even' >>> value(11) 'odd' Tal y como la has encontrado declara la función lambda y automáticamente pasa 101 como argumento, pero creo que haciéndolo en dos pasos se ve más claro. Luego, x%2 es una expresión que retorna el residuo de dividir un número (x) entre dos. Por tanto si el número es par (even) devolverá 0 y si es impar (odd) devolverá un número mayor que cero. Por otro lado, cuando utilizamos un operador condicional, Python evalúa los datos como booleanos. Aunque sean enteros o strings (esto es bastante curioso). Pero ¿Cómo transforma python un número entero (el resultado de x%2) o un string a un booleano? Pues siguiendo este criterio: -> Para enteros: 0 es False, cualquier otro número es True -> Para strings: "" es False (string vacío), cualquier otro se considera True (por ejemplo "hola" es True). Te pego un ejemplo de la consola de Python para ilustrar lo que te acabo de comentar: >>> bool(1) True >>> bool(10) True >>> bool(0) False >>> bool("hi") True >>> bool("") False A continuación hay que entender cómo utiliza los operadores "and" y "or" python. En la documentación de Python encontramos la siguiente explicación: x and y -> Se evalúa x, si esta es Falsa se retorna su valor. Si x es cierta, se evalúa "y" y se retorna su valor. x or y -> Se evalúa x, si esta es Cierta se retorna su valor. Si x es cierta, se evalúa "y" y se retorna su valor. Por tanto, volvamos a la función lambda por la que preguntas: "(x % 2 and 'odd' or 'even')" Para un número par (por ejemplo, para x=10 tenemos 10%2 = 0) -> 0 and 'odd' or 'even' Primero tenemos (0 and 'odd') -> Esto retorna 0, ya que 0 es False por tanto el operador and nos devuelve el valor del primer elemento. Luego tenemos (0 or 'even') -> Esto retorna 'even', pues 0 es False y el operador or nos devolverá el segundo elemento de la comparación. Para un número impar (por ejemplo, para x=11 tenemos 11%2 = 1) -> 1 and 'odd' or 'even' Primero tenemos (1 and 'odd') -> Esto retornará 'odd', ya que 1 es True por tanto el operador and devuelve el valor del segundo elemento. Luego tenemos ('odd' or 'even') -> Esto volverá a retornar 'odd', ya que 'odd' es True y el operador or devuelve el valor del primer elemento en caso de ser True. Tachán! Y así funciona la lambda que me has pasado. Creo que es la respuesta más larga hasta la fecha jajajaja. Espero que te haya podido ayudar. Tómatelo con calma y ves probando el código en la consola de python paso a paso para verlo mejor. Muy interesante tu duda, nos vemos por el canal.
@@Dimasmas wow! Me queda clarísimo. En todos lugares busque excepto en la documentación. No estoy acostumbrado pero a partir de ahora lo haré. Muchas gracias por tomarte el tiempo de explicarmelo. Saludos ;)
no le veo el uso a lambda por que con el def se puede hacer todo eso , y aun peor lo veo con menos uso el combinar lambda con un def , ya que en el mismo def se puede hacer
Sí, con def puedes hacer lo mismo que con las lambdas, eso es cierto. Son más bien una utilidad para generar funciones de una línea, que viene especialmente bien cuando se combina con map, filter o incluso callbacks para un botón de tkinter.
Lógico, al final los lamda son una forma de una línea de declarar una función, pero vienen bien cuando quieres ser breve, y complicar a quien lee tú código LOL, especialmente si no está muy curtido en Python otro LOL
💛 Hoola ¿Cómo va todo? Tres cosas importantes:
👉 Aquí tenéis el código fuente: github.com/dimas-avila/curso-python
👉 Si os queréis suscribir: th-cam.com/users/dimasmas
👉 Aquí tenéis el curso entero: th-cam.com/play/PLVs9JdE6ZZh112EBnYa_wCxYpbVXEXrLF.html
¿Ya conocíais las funciones lambda? Dejádmelo en los comentarios y os leo!
Otro video de 15 min que resuelve una hora de mi vida.... PEro que hace este hombre que no es profesor!?!?!?!?!?!
Eres el mejor ! . De verdad por favor sube más contendido de Python . Mil gracias , saludos desde Colombia . Explicas super bien !!
Eres el mejor de verdad , te mereces más suscriptores . No sabes cuanto te agradezco enserio ! . Dios te bendiga , saludos desde Colombia .
Excelentes videos mi hermano, no te desanimes si no ves muchas visitas, ya ves que TH-cam es difícil y más en este ámbito. Suerte, un abrazo!
Muchísimas gracias Fernando! Me animan un montón estos comentarios 😊
excelentes tus videos
me ayudan mucho
sigue subiendo python por fa
Muchas gracias! Seguiré subiendo python jajaajah 🙌
Hermano, muchas gracias por poner estos ejemplos, son los mejores y más completos que he encontrado. Te ganaste mi suscripción, sigue así! Eres un crack!!!
Muchas gracias!! Me alegra que te haya gustado, bienvenido al canal 😊😊
Por fin entendi las funciones lambda, muchas gracias Dimas!!!! eres el mejor, saludos desde Monterrey, Mexico
Que bien!! Saludos amigo
crack!!! por ti cada vez me motiva más enseñarme a programar
Super buenos los videos lo felicito desde Girardot - Colombia
Felicitaciones, eres el mejor instructor que he encontrado, te deseo que tengas muchisimo exito. Saludos desde Mexico!
Muchísimas gracias!! Que ilusión leer este comentario 🙌
Super bien explicado.
Muchas gracias 🙂
me parece que su conocimiento es muy tecnico y claro.... me gusta mucho.... gracias
Me alegra escuchar eso! Gracias por comentar ruko, nos vemos por el curso de python!
Excelente video! Te ganaste un suscriptor
Excelente explicación
Muchísimas gracias
Buen video, me ayudó muchísimo!!
Muchas gracias, me alegra poder ayudar!
Hola Dimas. Resolviendo algunas dudas me encontré con esta función lambda: "value = (lambda x: (x % 2 and 'odd' or 'even'))(101)" que retorna si el argumento es 'odd' o 'even'. Me he estado devanando los sesos y no logro comprender como esa sintaxis retorna ese valor. Me podrías ayudar a entender cómo funciona? Gracias
Buenas Rocco, es un poco confuso pero intentaré explicarlo. Vamos por partes:
Lo primero, la expresión que comentas "value = (lambda x: (x % 2 and 'odd' or 'even'))(101)" es equivalente a:
>>> value = lambda x: (x % 2 and 'odd' or 'even')
>>> value(10)
'even'
>>> value(11)
'odd'
Tal y como la has encontrado declara la función lambda y automáticamente pasa 101 como argumento, pero creo que haciéndolo en dos pasos se ve más claro.
Luego, x%2 es una expresión que retorna el residuo de dividir un número (x) entre dos. Por tanto si el número es par (even) devolverá 0 y si es impar (odd) devolverá un número mayor que cero.
Por otro lado, cuando utilizamos un operador condicional, Python evalúa los datos como booleanos. Aunque sean enteros o strings (esto es bastante curioso). Pero ¿Cómo transforma python un número entero (el resultado de x%2) o un string a un booleano? Pues siguiendo este criterio:
-> Para enteros: 0 es False, cualquier otro número es True
-> Para strings: "" es False (string vacío), cualquier otro se considera True (por ejemplo "hola" es True).
Te pego un ejemplo de la consola de Python para ilustrar lo que te acabo de comentar:
>>> bool(1)
True
>>> bool(10)
True
>>> bool(0)
False
>>> bool("hi")
True
>>> bool("")
False
A continuación hay que entender cómo utiliza los operadores "and" y "or" python. En la documentación de Python encontramos la siguiente explicación:
x and y -> Se evalúa x, si esta es Falsa se retorna su valor. Si x es cierta, se evalúa "y" y se retorna su valor.
x or y -> Se evalúa x, si esta es Cierta se retorna su valor. Si x es cierta, se evalúa "y" y se retorna su valor.
Por tanto, volvamos a la función lambda por la que preguntas: "(x % 2 and 'odd' or 'even')"
Para un número par (por ejemplo, para x=10 tenemos 10%2 = 0) -> 0 and 'odd' or 'even'
Primero tenemos (0 and 'odd') -> Esto retorna 0, ya que 0 es False por tanto el operador and nos devuelve el valor del primer elemento.
Luego tenemos (0 or 'even') -> Esto retorna 'even', pues 0 es False y el operador or nos devolverá el segundo elemento de la comparación.
Para un número impar (por ejemplo, para x=11 tenemos 11%2 = 1) -> 1 and 'odd' or 'even'
Primero tenemos (1 and 'odd') -> Esto retornará 'odd', ya que 1 es True por tanto el operador and devuelve el valor del segundo elemento.
Luego tenemos ('odd' or 'even') -> Esto volverá a retornar 'odd', ya que 'odd' es True y el operador or devuelve el valor del primer elemento en caso de ser True.
Tachán! Y así funciona la lambda que me has pasado. Creo que es la respuesta más larga hasta la fecha jajajaja. Espero que te haya podido ayudar. Tómatelo con calma y ves probando el código en la consola de python paso a paso para verlo mejor. Muy interesante tu duda, nos vemos por el canal.
@@Dimasmas wow! Me queda clarísimo. En todos lugares busque excepto en la documentación. No estoy acostumbrado pero a partir de ahora lo haré. Muchas gracias por tomarte el tiempo de explicarmelo. Saludos ;)
@@Rocco_Justice De nada amigo, me alegra que te haya podido ayudar!
no le veo el uso a lambda por que con el def se puede hacer todo eso , y aun peor lo veo con menos uso el combinar lambda con un def , ya que en el mismo def se puede hacer
Sí, con def puedes hacer lo mismo que con las lambdas, eso es cierto. Son más bien una utilidad para generar funciones de una línea, que viene especialmente bien cuando se combina con map, filter o incluso callbacks para un botón de tkinter.
Lógico, al final los lamda son una forma de una línea de declarar una función, pero vienen bien cuando quieres ser breve, y complicar a quien lee tú código LOL, especialmente si no está muy curtido en Python otro LOL