logo

vähentää() Pythonissa

The vähentää(hauskaa,seq) toimintoon on tottunut käyttää tiettyä argumentissa välitettyä funktiota kaikkiin luettelon elementteihin mainitussa järjestyksessä. Tämä toiminto on määritelty kohdassa toiminnalliset työkalut moduuli.

Työskentely:

  • Ensimmäisessä vaiheessa poimitaan kaksi ensimmäistä sekvenssin elementtiä ja saadaan tulos.
  • Seuraava askel on soveltaa samaa funktiota aiemmin saavutettuun tulokseen ja toisen elementin jälkeiseen numeroon ja tulos tallennetaan uudelleen.
  • Tätä prosessia jatketaan, kunnes säiliöön ei ole enää jäljellä elementtejä.
  • Lopullinen palautettu tulos palautetaan ja tulostetaan konsoliin.

Python 3






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

>

>

Lähtö

The sum of the list elements is : 17 The maximum element of the list is : 6>

Operaattoritoimintojen käyttäminen

Reduction() voidaan myös yhdistää operaattorifunktioiden kanssa samanlaisen toiminnallisuuden saavuttamiseksi kuin lambda-funktioiden kanssa ja tekee koodista luettavamman.

rdbms

Python 3




# 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'>]))>

>

>

Lähtö

The sum of the list elements is : 17 The product of list elements is : 180 The concatenated product is : geeksforgeeks>

vähentää() vs kerääntyä()

Sekä reduction()- että build():tä voidaan käyttää sarjan elementtien summauksen laskemiseen. Mutta näiden molempien toteutusnäkökohdissa on eroja.

  • Reduction() on määritelty functools-moduulissa, uzkrāšana() itertools-moduulissa.
  • Reduction() tallentaa välituloksen ja palauttaa vain lopullisen summausarvon. Akkumulaatio() palauttaa iteraattorin, joka sisältää välitulokset. Palautetun iteraattorin viimeinen numero on luettelon summa.
  • Reduction(fun, seq) ottaa funktion ensimmäisenä ja sekvenssin 2. argumenttina. Sitä vastoin akkumulaatio(seq, fun) ottaa sekvenssin 1. argumenttina ja funktion 2. argumenttina.

Python 3




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

java vertailu

>

>

Lähtö

The summation of list using accumulate is :[1, 4, 8, 18, 22] The summation of list using reduce is :22>

vähentää()-funktiota kolmella parametrilla

Reduce-funktio eli vähennysfunktio toimii 3 parametrilla python3:ssa sekä 2 parametrilla. Yksinkertaisesti sanottuna reduction() asettaa kolmannen parametrin ennen toisen parametrin arvoa, jos se on olemassa. Siten se tarkoittaa, että jos 2. argumentti on tyhjä sarja, niin kolmas argumentti toimii oletusarvona.

Tässä on esimerkki :(Tämä esimerkki on otettu kohteesta functools.reduce() -dokumentaatio sisältää Python-version funktiosta:

Python 3




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

kuinka ketjuttaa merkkijonoja javassa

>

>

Lähtö

15>

Tämän artikkelin on kirjoittanut Manjeet Singh (S. Nandini) .