logo

Funzioni Lambda di Python

Funzioni Lambda di Python sono funzioni anonime significa che la funzione è senza nome. Come già sappiamo il def La parola chiave viene utilizzata per definire una normale funzione in Python. Allo stesso modo, il lambda La parola chiave viene utilizzata per definire una funzione anonima in Pitone .

Sintassi della funzione Lambda Python

Sintassi: argomenti lambda: espressione

  • Questa funzione può avere un numero qualsiasi di argomenti ma solo un'espressione, che viene valutata e restituita.
  • Si è liberi di utilizzare le funzioni lambda ovunque siano richiesti oggetti funzione.
  • È necessario tenere presente che le funzioni lambda sono sintatticamente limitate a una singola espressione.
  • Ha vari usi in particolari campi della programmazione, oltre ad altri tipi di espressioni nelle funzioni.

Esempio di funzione Lambda Python

Nell'esempio, abbiamo definito una funzione lambda( superiore ) per convertire una stringa in maiuscolo utilizzando superiore() .



Questo codice definisce una funzione lambda denominata upper> che accetta una stringa come argomento e la converte in maiuscolo utilizzando il comando upper()> metodo. Quindi applica questa funzione lambda alla stringa 'techcodeview.com' e stampa il risultato

Python3




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

>

>

Produzione:

GEEKSFORGEEKS>

Utilizzo della funzione Lambda in Python

Vediamo alcuni degli usi pratici della funzione lambda Python.

Controllo delle condizioni utilizzando la funzione lambda Python

Ecco, il 'formato_numrico' chiama la funzione lambda e il num viene passato come parametro per eseguire le operazioni.

Python3




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>))>

>

>

Produzione:

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

Differenza tra le funzioni Lambda e la funzione definita

Il codice definisce una funzione cubo utilizzando sia il file ' def'> parola chiave e una funzione lambda. Calcola il cubo di un dato numero (5 in questo caso) utilizzando entrambi gli approcci e stampa i risultati. L'output è 125 per entrambi ' def'> e funzioni lambda, dimostrando che ottengono lo stesso calcolo del cubo.

Python3




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>))>

>

>

Produzione:

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

Come possiamo vedere nell'esempio sopra, sia the cubo() funzione e lambda_cubo() la funzione si comporta allo stesso modo e come previsto. Analizziamo un po’ di più l’esempio sopra:

Con funzione lambda

Senza funzione lambda

Supporta talvolta istruzioni a riga singola che restituiscono un valore. Supporta qualsiasi numero di righe all'interno di un blocco funzione
Utile per eseguire brevi operazioni/manipolazioni di dati. Buono per tutti i casi che richiedono più righe di codice.
L'uso della funzione lambda può talvolta ridurre la leggibilità del codice. Possiamo utilizzare commenti e descrizioni di funzioni per una facile leggibilità.

Usi pratici della funzione lambda Python

Funzione Lambda Python con comprensione delle liste

Ad ogni iterazione all'interno del file comprensione delle liste , stiamo creando una nuova funzione lambda con un argomento predefinito x (dove x è l'elemento corrente nell'iterazione). Successivamente, all'interno del ciclo for, chiameremo lo stesso oggetto funzione avente l'argomento predefinito using articolo() e ottieni il valore desiderato. Così, è_lista_pari memorizza l'elenco degli oggetti della funzione lambda.

Python3




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

>

>

Produzione:

10 20 30 40>

Funzione Lambda Python con if-else

Qui stiamo usando il Massimo funzione lambda per trovare il massimo tra due numeri interi.

Python3




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

>

>

Produzione:

2>

Python Lambda con istruzioni multiple

Le funzioni lambda non consentono più istruzioni, tuttavia, possiamo creare due funzioni lambda e quindi chiamare l'altra funzione lambda come parametro della prima funzione. Proviamo a trovare il secondo elemento massimo utilizzando lambda.

Il codice definisce un elenco di sottoliste chiamate ' List'> . Utilizza le funzioni lambda per ordinare ciascun sottoelenco e trovare il secondo elemento più grande in ciascun sottoelenco. Il risultato è un elenco dei secondi elementi più grandi, che viene quindi stampato. L'output visualizza il secondo elemento più grande di ciascun sottoelenco nell'elenco originale.

Python3




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)>

>

>

Produzione:

[3, 16, 9]>

Le funzioni Lambda possono essere utilizzate insieme a funzioni integrate come filtro() , carta geografica() E ridurre() .

Utilizzo della funzione lambda() con filter()

La funzione filter() in Python accetta una funzione e una lista come argomenti. Ciò offre un modo elegante per filtrare tutti gli elementi di una sequenza sequenza, per la quale la funzione restituisce True. Ecco un piccolo programma che restituisce i numeri dispari da un elenco di input:

Filtra tutti i numeri dispari utilizzando filter() e la funzione lambda

Qui, lambda x: (x % 2 != 0) restituisce Vero o Falso se x non è pari. Poiché filter() mantiene solo gli elementi dove produce VERO , quindi rimuove tutti i numeri dispari generati Falso .

Python3




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

>

>

Produzione:

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

Filtra tutte le persone di età superiore a 18 anni, utilizzando la funzione lambda e filter()

Il codice filtra un elenco di età ed estrae l'età degli adulti (età superiore a 18 anni) utilizzando una funzione lambda e ' filter'> funzione. Quindi stampa l'elenco delle età degli adulti. L'output mostra l'età degli individui che hanno 18 anni o più.

Python3




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

array di stringhe in linguaggio c
>

>

Produzione:

[90, 59, 21, 60]>

Utilizzo della funzione lambda() con map()

La funzione map() in Python accetta una funzione e una lista come argomento. La funzione viene chiamata con una funzione lambda e viene restituito un elenco e un nuovo elenco che contiene tutti gli elementi modificati con lambda restituiti da tale funzione per ciascun elemento. Esempio:

Moltiplica tutti gli elementi di una lista per 2 utilizzando la funzione lambda e map()

Il codice raddoppia ogni elemento in un elenco utilizzando una funzione lambda e il file ' map'> funzione. Quindi stampa la nuova lista con gli elementi raddoppiati. L'output mostra ogni elemento dell'elenco originale, moltiplicato per 2.

Python3




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

>

>

Produzione:

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

Trasforma tutti gli elementi di un elenco in maiuscolo utilizzando la funzione lambda e map()

Il codice converte un elenco di nomi di animali in maiuscolo utilizzando una funzione lambda e il file ' map'> funzione. Quindi stampa l'elenco con i nomi degli animali in maiuscolo. L'output visualizza i nomi degli animali in tutte le lettere maiuscole.

Python3




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

>

>

Produzione:

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

Utilizzo della funzione lambda() con reduce()

IL ridurre() La funzione in Python accetta una funzione e una lista come argomento. La funzione viene chiamata con una funzione lambda e viene restituito un iterabile e un nuovo risultato ridotto. Esegue un'operazione ripetitiva sulle coppie dell'iterabile. La funzione reduce() appartiene a funtools modulo.

Una somma di tutti gli elementi in un elenco utilizzando la funzione lambda e reduce()

Il codice calcola la somma degli elementi in un elenco utilizzando il metodo ' reduce'> funzione da ' functools'> modulo. Importa ' reduce'> , definisce una lista, applica una funzione lambda che aggiunge due elementi alla volta e stampa la somma di tutti gli elementi della lista. L'output mostra la somma calcolata.

Python3




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

>

>

Produzione:

193>

Qui i risultati dei due elementi precedenti vengono aggiunti all'elemento successivo e questo continua fino alla fine dell'elenco come (((((5+8)+10)+20)+50)+100).

Trova l'elemento massimo in un elenco utilizzando lambda e la funzione reduce()

Il codice utilizza il ' functools'> modulo per trovare l'elemento massimo in una lista ( ' lis'> ) impiegando il ' reduce'> funzione e una funzione lambda. Quindi stampa l'elemento massimo, che in questo caso è 6.

Python3




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>else> b, lis))>

>

>

Produzione:

The maximum element of the list is : 6>