Las 3 caracter铆sticas principales de Python que no conoc铆as (probablemente)

Hola Habr! Le presento la traducci贸n del art铆culo "Las 3 funciones principales de Python que no conoce (probablemente)" de Dario Rade膷i膰.

Al ser uno de los idiomas m谩s populares del siglo XXI, Python ciertamente tiene muchas caracter铆sticas interesantes que vale la pena explorar en detalle. Tres de ellos ser谩n considerados hoy, cada uno te贸ricamente, y luego con ejemplos pr谩cticos.

imagen

La raz贸n principal por la que quiero hablar sobre estas funciones es porque ayudan a evitar escribir bucles . Los ciclos pueden ser costosos en algunos casos, y adem谩s, estas caracter铆sticas ayudar谩n a aumentar la velocidad.

Estas son las funciones que se discutir谩n en el art铆culo:

1. map ()
2. filter ()
3. reduce ()

Incluso si ya ha escuchado sobre estas funciones, no hay nada de malo en reforzar su conocimiento con un poco m谩s de teor铆a y ejemplos.

Entonces, sin m谩s pre谩mbulos ... 隆Comencemos!

mapa ()


La funci贸n map () toma como par谩metro otra funci贸n junto con alguna matriz. La idea es aplicar una funci贸n (aprobada como argumento) a cada elemento de la matriz.

Esto es 煤til por dos razones:

  1. No necesitas escribir un bucle
  2. Es m谩s r谩pido que un bucle

Miremos en acci贸n. Declarar茅 una funci贸n "num_func ()" que toma un solo n煤mero como par谩metro. Este n煤mero es cuadrado, divisible por 2 y devuelto como tal. Tenga en cuenta que las operaciones se eligieron arbitrariamente, puede hacer cualquier cosa dentro de la funci贸n:

imagen

Ahora declaremos una matriz de n煤meros a los que queremos aplicar "num_func ()". Tenga en cuenta que "map ()" en s铆 mismo devolver谩 el objeto de visualizaci贸n , por lo que debe convertirlo en una lista:

imagen

parece que el proceso se complet贸 con 茅xito. No hay nada revolucionario aqu铆, pero ser铆a bueno evitar los ciclos cuando sea posible.

filtro ()


Aqu铆 hay otra caracter铆stica decente que le ahorrar谩 tiempo, tanto por escrito como en ejecuci贸n. Como su nombre lo indica, la idea es almacenar en la matriz solo aquellos elementos que satisfagan una determinada condici贸n .

Como en el caso de "map ()", podemos declarar una funci贸n por adelantado y luego pasarla a "filter ()" junto con un objeto iterable (por ejemplo, una lista).

Miremos en acci贸n. Fui m谩s all谩 y declar贸 una funci贸n "more_than_15 ()", que, como su nombre lo indica, devolver谩 "verdadero" si el elemento especificado como par谩metro es mayor que 15:

imagen

A continuaci贸n, declaramos una matriz de n煤meros y los pasamos como el segundo par谩metro a la funci贸n " filtro () ":

imagen

Como se esperaba, solo tres valores satisfacen esta condici贸n. Una vez m谩s, nada revolucionario aqu铆, pero se ve mucho mejor que el ciclo.

reducir ()


Ahora "reduce ()". Es ligeramente diferente de los dos anteriores. Primero tenemos que importarlo desde el m贸dulo functools. La idea principal es que aplicar谩 esta funci贸n a una matriz de elementos y, como resultado, devolver谩 un solo valor .

La 煤ltima parte es crucial: "reduce ()" no devuelve una matriz de elementos, siempre devuelve un 煤nico valor. Echemos un vistazo al diagrama para concretar este concepto:

imagen

aqu铆 est谩 la l贸gica escrita en caso de que el diagrama no sea 100% claro:

  1. 5 a帽adido a 10, resultados en 15
  2. 15 a帽adido a 12, resultados en 27
  3. 27 se agrega a 18, el resultado es 45
  4. 45 se agrega a 25, el resultado es 70

Y 70 es el valor que devuelve. Para comenzar con la implementaci贸n del c贸digo, importemos la funci贸n de reducci贸n desde el m贸dulo functools y declaremos una funci贸n que devuelva la suma de dos n煤meros :

imagen

ahora podemos volver al diagrama en el c贸digo y asegurarnos de que todo funcione como deber铆a:

imagen

hasta que vaya a la secci贸n de comentarios, s茅 perfectamente que hay otras formas de resumir elementos de la lista. Este es el ejemplo m谩s simple para demostrar c贸mo funciona una funci贸n.

Antes de que te vayas:


Espero que de alguna manera puedas usar estas tres funciones en tu vida diaria. El aumento de velocidad puede no ser significativo, depende de la cantidad de datos con los que trabaje, pero el c贸digo se ver谩 mejor con menos bucles.

Si tiene otros ejemplos, no dude en compartirlos en la secci贸n de comentarios.

Gracias por leer.

All Articles