logo

redu() in Python

In Python ist Reduce() eine integrierte Funktion, die eine bestimmte Funktion auf die Elemente eines Iterables anwendet und sie auf einen einzigen Wert reduziert.

Die Syntax für Reduce() lautet wie folgt:

 functools.reduce(function, iterable[, initializer]) 
  • Der Funktionsargument ist eine Funktion, die zwei Argumente akzeptiert und einen einzelnen Wert zurückgibt. Das erste Argument ist der akkumulierte Wert und das zweite Argument ist der aktuelle Wert aus der Iterable.
  • Der wiederholbar Argument ist die Folge der zu reduzierenden Werte.
  • Das optionale Initialisierungsargument wird verwendet, um einen Anfangswert für das akkumulierte Ergebnis bereitzustellen. Wenn kein Initialisierer angegeben ist, wird das erste Element der Iterable als Anfangswert verwendet.

Hier ist ein Beispiel, das zeigt, wie man mit Reduce() die Summe einer Liste von Zahlen ermittelt:

Wie groß ist dieser Monitor?
 # Examples to understand the reduce() function from functools import reduce # Function that returns the sum of two numbers def add(a, b): return a + b # Our Iterable num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # add function is passed as the first argument, and num_list is passed as the second argument sum = reduce(add, num_list) print(f'Sum of the integers of num_list : {sum}') # Passing 10 as an initial value sum = reduce(add, num_list, 10) print(f'Sum of the integers of num_list with initial value 10 : {sum}') 

Ausgabe:

 Sum of the integers of num_list : 55 Sum of the integers of num_list with initial value 10 : 65 

In diesem Beispiel verwenden wir die Funktion „reduce()“, um eine Additionsfunktion anzuwenden, die die Summe zweier Werte für jedes Elementpaar in der Zahlenliste zurückgibt, was die Summe aller Elemente ergibt.

Lassen Sie uns die Lambda-Funktion als erstes Argument der Reduce()-Funktion verwenden:

 # Importing reduce function from functools from functools import reduce # Creating a list my_list = [1, 2, 3, 4, 5] # Calculating the product of the numbers in my_list # using reduce and lambda functions together product = reduce(lambda x, y: x * y, my_list) # Printing output print(f'Product = {product}') # Output : Product = 120 

Lassen Sie uns zusammenfassen, wie das reduzieren() Funktion funktioniert für das angegebene Beispiel:

Die Funktion „reduce()“ benötigt zwei Argumente: eine Funktion und ein iterierbares Argument. In diesem Fall verwenden wir eine Lambda-Funktion lambda x, y: x * y als Funktion und die Zahlenliste als iterierbare Funktion.

String Java ersetzen
  • Die Lambda-Funktion akzeptiert die Variablen x und y, multipliziert sie und gibt das Ergebnis zurück. Wenn die Lambda-Funktion zum ersten Mal ausgeführt wird, werden die Variablen x und y auf das erste bzw. zweite Element der my_list gesetzt (d. h. x = 1 und y = 2). Die Lambda-Funktion multipliziert diese beiden Zahlen und gibt das Ergebnis zurück (1 * 2 = 2).
  • Beim zweiten Aufruf der Lambda-Funktion wird x auf das Ergebnis des vorherigen Aufrufs (x = 2) und y auf das dritte Element der Zahlenliste (d. h. y = 3) gesetzt. Es multipliziert diese beiden Werte und gibt das Ergebnis zurück (2 * 3 = 6).
  • Die Lambda-Funktion wird auf diese Weise für jedes Element in der my_list wiederholt aufgerufen, bis alle Elemente verarbeitet wurden. Die Funktion „reduce()“ gibt das Produkt aller Elemente der Liste zurück, das dann der Produktvariablen als 120 zugewiesen wird. Dieses Produkt wird wie folgt berechnet: ((((1 * 2) * 3)* 4)* 5) = 120.
  • Schließlich drucken wir den Wert der Produktvariablen mit der Funktion print() aus, die 120 ausgibt.

redu()-Funktion mit Operatorfunktionen

Wir können unseren Code prägnanter und leichter lesbar machen, indem wir Operatorfunktionen anstelle von Lambda-Funktionen verwenden.

Hier ist ein Beispiel, um die Verwendung von Operatorfunktionen als erstes Argument der Reduzierungsfunktion zu demonstrieren:

 # Python program to demonstrate # how to use operator functions with reduce function # Importing reduce function from functools import reduce # Importing operator import operator # Creating lists my_list1 = [1, 2, 3, 4, 5] my_list2 = ['I', 'Love', 'Javatpoint'] # Calculating the sum of the numbers of my_list1 # using reduce and operator.add sum = reduce(operator.add, my_list1) # Calculating the product of the numbers of my_list1 # using reduce and operator.mul product = reduce(operator.mul, my_list1) # Concatenating all the elements in my_list2 # using reduce and operator.concat concated_str1 = reduce(operator.concat, my_list2) # We can achieve the same output by using operator.add concated_str2 = reduce(operator.add, my_list2) # Printing result print(f'Sum of all elements in my_list1 : {sum}') print(f'Product of all elements in my_list1 : {product}') print(f'Concatenated string by using operator.concat : {concated_str1}') print(f'Concatenated string by using operator.add : {concated_str2}') 

Ausgabe:

So wählen Sie Spalten aus verschiedenen Tabellen in SQL aus
 Sum of all elements in my_list1 : 15 Product of all elements in my_list1 : 120 Concatenated string by using operator.concat : ILoveJavatpoint Concatenated string by using operator.add : ILoveJavatpoint 

Dieser Code zeigt, wie Sie die Funktion „reduc()“ und die Operatorfunktionen verwenden, um mathematische Operationen und String-Operationen für Iterables in Python auszuführen.

Den Unterschied zwischen den Funktionen Reduce() und Accumulate() verstehen:

Das Python-Functools-Modul stellt die Funktionen Reduce() und Accumulate() bereit, die beide auf vergleichbare Weise mit Iterables arbeiten.

  1. Der reduzieren () Und akkumulieren ()-Funktionen ähneln sich darin, dass sie beide zwei Argumente akzeptieren: das Iterable selbst und eine Funktion, die die darauf auszuführende Operation beschreibt. Die größten Unterschiede bestehen jedoch in der Art und Weise, wie sie mit den Ergebnissen der Operation umgehen.
  2. Der reduzieren () führt die Operation für die ersten beiden Elemente des Iterables aus, bevor sie dieselbe Operation für das Ergebnis und das nächste Element ausführt. Dieser Vorgang wird wiederholt, bis alle Elemente des Iterables verarbeitet wurden. Die endgültige Ausgabe der Operation wird als einzelnes Ergebnis zurückgegeben.
  3. Während akkumulieren () die Operation auch auf die ersten beiden Elemente des Iterables anwendet, bevor sie dieselbe Operation auf das Ergebnis und die nachfolgenden Elemente durchführt, gibt die Funktion „akkumulieren()“ einen Iterator zurück, der die Zwischenergebnisse der Operation enthält. Mit anderen Worten, nachdem jedes Element behandelt wurde, wird das akkumulieren ()-Funktion stellt eine Reihe von Werten bereit, die das Ergebnis der Operation darstellen.

Ein Beispiel, um den Unterschied zwischen Accumulate() und Reduce() zu verstehen:

Mittelwert vs. Durchschnitt
 # Python Program to demonstrate the difference # between reduce and accumulate # Importing reduce and accumulate function from functools import reduce, accumulate # Creating a list my_list = [1, 2, 3, 4, 5] # Using reduce() to calculate the product of all numbers product = reduce(lambda x, y: x * y, my_list) print(f'Product using reduce() : {product}') # Output: 120 # Using accumulate() to calculate the product of all numbers products = list(accumulate(my_list, lambda x, y: x * y)) print(f'Products using accumulate() : {products}')# Output: [1, 2, 6, 24, 120] 

In diesem Beispiel haben wir eine Liste mit Zahlen [1, 2, 3, 4, 5]. Wir gebrauchen reduzieren() um das Produkt aller Zahlen zu berechnen, das einen Einzelwert von 120 ergibt.

Wir benützen auch akkumulieren() um das Produkt aller Zahlen zu berechnen. Anstatt jedoch einen einzelnen Wert zurückzugeben, akkumulieren() gibt einen Iterator zurück, der eine Folge von Zwischenergebnissen liefert: [1, 2, 6, 24, 120].

Also der Hauptunterschied zwischen reduzieren() undakkumulieren() bedeutet, dass Reduce() einen einzelnen Wert zurückgibt, der die endgültige Ausgabe der Operation darstellt. Im Gegensatz dazu gibt „akkumulieren()“ einen Iterator zurück, der eine Folge von Zwischenergebnissen liefert.