De redusere(moro,seq) funksjonen er vant til bruke en bestemt funksjon sendt i argumentet på alle listeelementene nevnt i sekvensen videreført. Denne funksjonen er definert i funksjonsverktøy modul.
Arbeider :
hva er awt
- I det første trinnet velges de to første sekvenselementene og resultatet oppnås.
- Neste trinn er å bruke den samme funksjonen på det tidligere oppnådde resultatet og tallet som følger etter det andre elementet og resultatet lagres igjen.
- Denne prosessen fortsetter til det ikke er flere elementer igjen i beholderen.
- Det endelige returnerte resultatet returneres og skrives ut på konsollen.
Python3
# python code to demonstrate working of reduce()> > # importing functools for reduce()> import> functools> > # initializing list> lis>=> [>1>,>3>,>5>,>6>,>2>]> > # using reduce to compute sum of list> print>(>'The sum of the list elements is : '>, end>=>'')> print>(functools.>reduce>(>lambda> a, b: a>+>b, lis))> > # using reduce to compute maximum element from list> print>(>'The maximum element of the list is : '>, end>=>'')> print>(functools.>reduce>(>lambda> a, b: a>if> a>b>else> b, lis))> |
>
>Produksjon
The sum of the list elements is : 17 The maximum element of the list is : 6>
Bruke operatørfunksjoner
reduce() kan også kombineres med operatørfunksjoner for å oppnå tilsvarende funksjonalitet som med lambda-funksjoner og gjør koden mer lesbar.
Python3
# python code to demonstrate working of reduce()> # using operator functions> > # importing functools for reduce()> import> functools> > # importing operator for operator functions> import> operator> > # initializing list> lis>=> [>1>,>3>,>5>,>6>,>2>]> > # using reduce to compute sum of list> # using operator functions> print>(>'The sum of the list elements is : '>, end>=>'')> print>(functools.>reduce>(operator.add, lis))> > # using reduce to compute product> # using operator functions> print>(>'The product of list elements is : '>, end>=>'')> print>(functools.>reduce>(operator.mul, lis))> > # using reduce to concatenate string> print>(>'The concatenated product is : '>, end>=>'')> print>(functools.>reduce>(operator.add, [>'geeks'>,>'for'>,>'geeks'>]))> |
>
>Produksjon
The sum of the list elements is : 17 The product of list elements is : 180 The concatenated product is : geeksforgeeks>
redusere() vs akkumulere()
Både reduce() og accumulate() kan brukes til å beregne summeringen av et sekvenselement. Men det er forskjeller i gjennomføringsaspektene i begge disse.
- reduce() er definert i functools-modulen, accumulate() i itertools-modulen.
- reduce() lagrer mellomresultatet og returnerer bare den endelige summeringsverdien. Mens akkumulere() returnerer en iterator som inneholder mellomresultatene. Det siste tallet på iteratoren som returneres er summeringsverdien for listen.
- redusere(moro, seq) tar funksjon som 1. og sekvens som 2. argument. Derimot tar accumulate(seq, fun) sekvens som 1. argument og fungerer som 2. argument.
Python3
# python code to demonstrate summation> # using reduce() and accumulate()> > # importing itertools for accumulate()> import> itertools> > # importing functools for reduce()> import> functools> > # initializing list> lis>=> [>1>,>3>,>4>,>10>,>4>]> > # printing summation using accumulate()> print>(>'The summation of list using accumulate is :'>, end>=>'')> print>(>list>(itertools.accumulate(lis,>lambda> x, y: x>+>y)))> > # printing summation using reduce()> print>(>'The summation of list using reduce is :'>, end>=>'')> print>(functools.>reduce>(>lambda> x, y: x>+>y, lis))> |
>
>Produksjon
The summation of list using accumulate is :[1, 4, 8, 18, 22] The summation of list using reduce is :22>
reduce() funksjon med tre parametere
Reduce-funksjonen, dvs. redusere()-funksjonen fungerer med 3 parametere i python3 så vel som for 2 parametere. For å si det på en enkel måte, plasserer reduce() den tredje parameteren før verdien til den andre, hvis den er til stede. Dermed betyr det at hvis det andre argumentet er en tom sekvens, fungerer det tredje argumentet som standard.
Her er et eksempel:(Dette eksemplet er tatt fra functools.reduce() dokumentasjon inkluderer en Python-versjon av funksjonen:
Python3
Java-opplæringer
# Python program to illustrate sum of two numbers.> def> reduce>(function, iterable, initializer>=>None>):> >it>=> iter>(iterable)> >if> initializer>is> None>:> >value>=> next>(it)> >else>:> >value>=> initializer> >for> element>in> it:> >value>=> function(value, element)> >return> value> > # Note that the initializer, when not None, is used as the first value instead of the first value from iterable , and after the whole iterable.> tup>=> (>2>,>1>,>0>,>2>,>2>,>0>,>0>,>2>)> print>(>reduce>(>lambda> x, y: x>+>y, tup,>6>))> > # This code is contributed by aashutoshjha> |
>
>Produksjon
15>
Denne artikkelen er bidratt av Manjeet Singh (S. Nandini) .