Det reducere(sjov,seq) funktion bruges til anvende en bestemt funktion, der er sendt i dens argument, på alle listeelementerne nævnt i rækkefølgen, der er videregivet. Denne funktion er defineret i funktionsværktøjer modul.
Arbejder :
kalder js-funktionen fra html
- I det første trin vælges de første to elementer af sekvensen, og resultatet opnås.
- Næste trin er at anvende den samme funktion på det tidligere opnåede resultat, og tallet, der lige efterfølger det andet element, og resultatet gemmes igen.
- Denne proces fortsætter, indtil der ikke er flere elementer tilbage i beholderen.
- Det endelige returnerede resultat returneres og udskrives 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))> |
>
>Produktion
The sum of the list elements is : 17 The maximum element of the list is : 6>
Brug af operatørfunktioner
reduce() kan også kombineres med operatorfunktioner for at opnå samme funktionalitet som med lambda-funktioner og gør koden mere læsbar.
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'>]))> |
>
>Produktion
The sum of the list elements is : 17 The product of list elements is : 180 The concatenated product is : geeksforgeeks>
reducere() vs akkumulere()
Både reduce() og accumulate() kan bruges til at beregne summeringen af en sekvenselementer. Men der er forskelle i implementeringsaspekterne i begge disse.
- reduce() er defineret i functools-modulet, accumulate() i itertools-modulet.
- reduce() gemmer det mellemliggende resultat og returnerer kun den endelige summeringsværdi. Hvorimod accumulate() returnerer en iterator, der indeholder de mellemliggende resultater. Det sidste tal i iteratoren, der returneres, er summationsværdien af listen.
- reduce(sjov, seq) tager funktionen som 1. og sekvens som 2. argument. I modsætning hertil tager 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))> |
>
>Produktion
The summation of list using accumulate is :[1, 4, 8, 18, 22] The summation of list using reduce is :22>
reduce() funktion med tre parametre
Reducer funktion, dvs. reduce() funktion fungerer med 3 parametre i python3 såvel som for 2 parametre. For at sige det på en enkel måde placerer reduce() den 3. parameter før værdien af den anden, hvis den er til stede. Det betyder således, at hvis 2. argument er en tom sekvens, så fungerer 3. argument som standard.
Her er et eksempel:(Dette eksempel er taget fra functools.reduce() dokumentation indeholder en Python-version af funktionen:
Python3
java tutorials
# 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> |
>
>Produktion
15>
Denne artikel er bidraget af Manjeet Singh(S. Nandini) .