logo

Funcions Lambda de Python

Funcions Lambda de Python són funcions anònimes significa que la funció no té nom. Com ja sabem el def La paraula clau s'utilitza per definir una funció normal a Python. De la mateixa manera, el lambda La paraula clau s'utilitza per definir una funció anònima a Python .

Sintaxi de la funció Lambda de Python

Sintaxi: arguments lambda: expressió



  • Aquesta funció pot tenir qualsevol nombre d'arguments però només una expressió, que s'avalua i es retorna.
  • Un és lliure d'utilitzar funcions lambda allà on es requereixin objectes de funció.
  • Heu de saber que les funcions lambda estan restringides sintàcticament a una única expressió.
  • Té diversos usos en camps particulars de la programació, a més d'altres tipus d'expressions en funcions.

Exemple de funció Lambda de Python

A l'exemple, hem definit una funció lambda ( superior ) per convertir una cadena a majúscules utilitzant superior () .

Aquest codi defineix una funció lambda anomenada upper> que pren una cadena com a argument i la converteix en majúscules mitjançant l' upper()> mètode. A continuació, aplica aquesta funció lambda a la cadena 'techcodeview.com' i imprimeix el resultat

Python 3








str1>=> 'techcodeview.com'> upper>=> lambda> string: string.upper()> print>(upper(str1))>

>

>

Sortida:

GEEKSFORGEEKS>

Ús de la funció Lambda a Python

Vegem alguns dels usos pràctics de la funció lambda de Python.

Comprovació de condicions mitjançant la funció lambda de Python

Aquí, el 'format_numèric' crida a la funció lambda i el num es passa com a paràmetre per realitzar operacions.

Python 3




format_numeric>=> lambda> num: f>'{num:e}'> if> isinstance>(num,>int>)>else> f>'{num:,.2f}'> print>(>'Int formatting:'>, format_numeric(>1000000>))> print>(>'float formatting:'>, format_numeric(>999999.789541235>))>

>

>

Sortida:

Int formatting: 1.000000e+06 float formatting: 999,999.79>

Diferència entre les funcions Lambda i la funció definida

El codi defineix una funció de cub utilitzant els dos def'> paraula clau i una funció lambda. Calcula el cub d'un nombre donat (5 en aquest cas) utilitzant ambdós enfocaments i imprimeix els resultats. La sortida és 125 per a tots dos def'> i les funcions lambda, demostrant que aconsegueixen el mateix càlcul del cub.

Python 3




def> cube(y):> >return> y>*>y>*>y> lambda_cube>=> lambda> y: y>*>y>*>y> print>(>'Using function defined with `def` keyword, cube:'>, cube(>5>))> print>(>'Using lambda function, cube:'>, lambda_cube(>5>))>

>

>

Sortida:

Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>

Com podem veure a l'exemple anterior, tant el cub () funció i lambda_cube() funció es comporten igual i com es pretén. Analitzem una mica més l'exemple anterior:

Amb funció lambda

Sense funció lambda

De vegades admet declaracions d'una sola línia que retornen algun valor. Admet qualsevol nombre de línies dins d'un bloc de funcions
Bo per realitzar operacions curtes/manipulacions de dades. Bo per a qualsevol cas que requereixi diverses línies de codi.
L'ús de la funció lambda en algun moment pot reduir la llegibilitat del codi. Podem utilitzar comentaris i descripcions de funcions per facilitar la lectura.

Usos pràctics de la funció lambda de Python

Funció Lambda de Python amb comprensió de llista

A cada iteració dins del comprensió de llista , estem creant una nova funció lambda amb un argument predeterminat de x (on x és l'element actual de la iteració). Més tard, dins del bucle for, estem cridant al mateix objecte de funció que té l'argument predeterminat article() i obtenir el valor desitjat. Així, és_llista_par emmagatzema la llista d'objectes de funció lambda.

Python 3




is_even_list>=> [>lambda> arg>=>x: arg>*> 10> for> x>in> range>(>1>,>5>)]> for> item>in> is_even_list:> >print>(item())>

>

>

Sortida:

10 20 30 40>

Funció Lambda de Python amb if-else

Aquí estem utilitzant el Màx funció lambda per trobar el màxim de dos nombres enters.

Python 3




Max> => lambda> a, b : a>if>(a>b)>>>b> print>(>Max>(>1>,>2>))>

>

>

Sortida:

2>

Python Lambda amb múltiples declaracions

Les funcions lambda no permeten declaracions múltiples, però, podem crear dues funcions lambda i després cridar l'altra funció lambda com a paràmetre de la primera funció. Intentem trobar el segon element màxim amb lambda.

El codi defineix una llista de subllistes anomenades List'> . Utilitza funcions lambda per ordenar cada subllista i trobar el segon element més gran de cada subllista. El resultat és una llista dels segons elements més grans, que després s'imprimeix. La sortida mostra el segon element més gran de cada subllista de la llista original.

Python 3




List> => [[>2>,>3>,>4>],[>1>,>4>,>16>,>64>],[>3>,>6>,>9>,>12>]]> sortList>=> lambda> x: (>sorted>(i)>for> i>in> x)> secondLargest>=> lambda> x, f : [y[>len>(y)>->2>]>for> y>in> f(x)]> res>=> secondLargest(>List>, sortList)> print>(res)>

>

>

Sortida:

[3, 16, 9]>

Les funcions lambda es poden utilitzar juntament amb funcions integrades com ara filtre () , mapa () i reduir () .

Utilitzant la funció lambda() amb filter()

La funció filter() de Python incorpora una funció i una llista com a arguments. Això ofereix una manera elegant de filtrar tots els elements d'una seqüència de seqüències, per a la qual la funció retorna True. Aquí hi ha un petit programa que retorna els nombres senars d'una llista d'entrada:

Filtreu tots els nombres senars mitjançant filter() i la funció lambda

Aquí, lambda x: (x % 2 != 0) retorna Vertader o Fals si x no és parell. Com que filter() només manté els elements on produeix És cert , per tant elimina tots els nombres senars que s'han generat Fals .

Python 3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>filter>(>lambda> x: (x>%> 2> !>=> 0>), li))> print>(final_list)>

>

>

Sortida:

[5, 7, 97, 77, 23, 73, 61]>

Filtreu totes les persones que tinguin més de 18 anys mitjançant lambda i la funció filter().

El codi filtra una llista d'edats i extreu les edats dels adults (més de 18 anys) mitjançant una funció lambda i la filter'> funció. A continuació, imprimeix la llista d'edats adultes. La sortida mostra les edats de les persones de 18 anys o més.

Python 3




ages>=> [>13>,>90>,>17>,>59>,>21>,>60>,>5>]> adults>=> list>(>filter>(>lambda> age: age>>18>, ages))> print>(adults)>

algorisme de cabina
>

>

Sortida:

[90, 59, 21, 60]>

Utilitzant la funció lambda() amb map()

La funció map() de Python incorpora una funció i una llista com a argument. La funció es crida amb una funció lambda i una llista i es retorna una llista nova que conté tots els elements modificats amb lambda que aquesta funció ha retornat per a cada element. Exemple:

Multipliqueu tots els elements d'una llista per 2 mitjançant lambda i la funció map().

El codi duplica cada element d'una llista mitjançant una funció lambda i el map'> funció. A continuació, imprimeix la nova llista amb els elements duplicats. La sortida mostra cada element de la llista original, multiplicat per 2.

Python 3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>map>(>lambda> x: x>*>2>, li))> print>(final_list)>

>

>

Sortida:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>

Transformeu tots els elements d'una llista a majúscules mitjançant lambda i la funció map().

El codi converteix una llista de noms d'animals a majúscules mitjançant una funció lambda i el map'> funció. A continuació, imprimeix la llista amb els noms dels animals en majúscules. La sortida mostra els noms dels animals en majúscules.

Python 3




animals>=> [>'dog'>,>'cat'>,>'parrot'>,>'rabbit'>]> uppered_animals>=> list>(>map>(>lambda> animal: animal.upper(), animals))> print>(uppered_animals)>

>

>

Sortida:

['DOG', 'CAT', 'PARROT', 'RABBIT']>

Utilitzant la funció lambda() amb reduce()

El reduir () La funció a Python incorpora una funció i una llista com a argument. La funció es crida amb una funció lambda i es retorna un resultat iterable i un nou reduït. Això realitza una operació repetitiva sobre els parells de l'iterable. La funció reduce() pertany a la funció functools mòdul.

Una suma de tots els elements d'una llista utilitzant la funció lambda i reduce().

El codi calcula la suma d'elements d'una llista mitjançant l' reduce'> funció des del functools'> mòdul. S'importa reduce'> , defineix una llista, aplica una funció lambda que afegeix dos elements alhora i imprimeix la suma de tots els elements de la llista. La sortida mostra la suma calculada.

Python 3




from> functools>import> reduce> li>=> [>5>,>8>,>10>,>20>,>50>,>100>]> sum> => reduce>((>lambda> x, y: x>+> y), li)> print>(>sum>)>

>

>

Sortida:

193>

Aquí els resultats dels dos elements anteriors s'afegeixen al següent element i això continua fins al final de la llista com (((((5+8)+10)+20)+50)+100).

Trobeu l'element màxim en una llista utilitzant la funció lambda i reduce().

El codi utilitza el functools'> mòdul per trobar l'element màxim en una llista ( lis'> ) fent servir el reduce'> funció i una funció lambda. A continuació, imprimeix l'element màxim, que és 6 en aquest cas.

Python 3




import> functools> lis>=> [>1>,>3>,>5>,>6>,>2>, ]> print>(>'The maximum element of the list is : '>, end>=>'')> print>(functools.>reduce>(>lambda> a, b: a>if> a>b>>>b, lis))>

>

>

Sortida:

The maximum element of the list is : 6>