logo

redu() in Python

Der Reduzieren(Spaß,Seq) Funktion verwendet wird Wenden Sie eine bestimmte in ihrem Argument übergebene Funktion auf alle Listenelemente an in der weitergegebenen Sequenz erwähnt. Diese Funktion ist in definiert Funktools Modul.

Arbeiten :

  • Im ersten Schritt werden die ersten beiden Elemente der Sequenz ausgewählt und das Ergebnis erhalten.
  • Der nächste Schritt besteht darin, dieselbe Funktion auf das zuvor erzielte Ergebnis und die Zahl anzuwenden, die gerade auf das zweite Element folgt, und das Ergebnis wird erneut gespeichert.
  • Dieser Vorgang wird fortgesetzt, bis keine Elemente mehr im Container vorhanden sind.
  • Das endgültig zurückgegebene Ergebnis wird zurückgegeben und auf der Konsole gedruckt.

Python3






Wie groß ist dieser Monitor?

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

>

>

Ausgabe

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

Verwenden von Operatorfunktionen

reduce() kann auch mit Operatorfunktionen kombiniert werden, um eine ähnliche Funktionalität wie mit Lambda-Funktionen zu erreichen und den Code besser lesbar zu machen.

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

>

String Java ersetzen

>

Ausgabe

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

reduzieren() vs. akkumulieren()

Sowohl Reduce() als auch Accumulate() können verwendet werden, um die Summe von Sequenzelementen zu berechnen. Allerdings gibt es bei beiden Umsetzungsaspekten Unterschiede.

  • Reduce() ist im Functools-Modul definiert, Accumulate() im Itertools-Modul.
  • redu() speichert das Zwischenergebnis und gibt nur den endgültigen Summenwert zurück. Accumule() hingegen gibt einen Iterator zurück, der die Zwischenergebnisse enthält. Die letzte vom Iterator zurückgegebene Zahl ist der Summenwert der Liste.
  • reduce(fun, seq) übernimmt die Funktion als erstes und die Sequenz als zweites Argument. Im Gegensatz dazu verwendet „akkumulieren(seq, fun)“ die Sequenz als erstes Argument und die Funktion als zweites 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))>

>

So wählen Sie Spalten aus verschiedenen Tabellen in SQL aus
>

Ausgabe

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

redu()-Funktion mit drei Parametern

Mittelwert vs. Durchschnitt

Die Reduzierfunktion, d. h. die Funktion „reduce()“, funktioniert sowohl mit 3 Parametern in Python3 als auch mit 2 Parametern. Um es einfach auszudrücken: Reduce() platziert den dritten Parameter vor dem Wert des zweiten, sofern dieser vorhanden ist. Das bedeutet also, dass, wenn das 2. Argument eine leere Sequenz ist, das 3. Argument als Standardargument dient.

Hier ist ein Beispiel :(Dieses Beispiel stammt aus dem functools.reduce()-Dokumentation enthält eine Python-Version der Funktion:

Python3




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

>

>

Ausgabe

15>

Dieser Artikel wurde verfasst von Manjeet Singh (S. Nandini) .