LU04f - Die reduce-Funktion in Python

Die reduce-Funktion ist eine nützliche eingebaute Funktion in Python, die in der Standardbibliothek functools verfügbar ist. Die Funktion nimmt eine Funktion und ein Iterable als Argumente und reduziert das Iterable auf einen einzelnen Wert, indem die Funktion auf die Elemente des Iterables angewendet wird.

Die Syntax der reduce-Funktion ist wie folgt:

from functools import reduce
 
result = reduce(function, iterable, [initial])
  • function: Eine Funktion, die zwei Argumente nimmt und einen Wert zurückgibt.
  • iterable: Das Iterable, das reduziert werden soll.
  • initial: Ein optionaler Startwert, der als erstes Element für die Reduzierung verwendet wird.

Ein einfaches Beispiel für die Verwendung der reduce-Funktion ist die Summierung aller Elemente einer Liste:

from functools import reduce
 
numbers = [1, 2, 3, 4]
product_of_numbers = reduce(lambda x, y: x * y, numbers)
print(product_of_numbers)  # Output: 24

Die Funktion, die an reduce übergeben wird, muss nicht notwendigerweise eine Lambda-Funktion sein. Sie kann auch eine reguläre Funktion sein, die zwei Argumente nimmt und einen Wert zurückgibt.

from functools import reduce
 
def multiply(x, y):
    return x * y
 
numbers = [1, 2, 3, 4]
product_of_numbers = reduce(multiply, numbers)
print(product_of_numbers)  # Output: 24

Vergleich mit for-Schleife

Das gleiche Ergebnis könnte auch mit einer for-Schleife erreicht werden, aber die reduce-Funktion bietet eine kompaktere und oft lesbarere Lösung.

numbers = [1, 2, 3, 4]
product_of_numbers = 1  # Initialer Wert muss 1 sein, damit die Multiplikation funktioniert
 
for num in numbers:
    product_of_numbers *= num
 
print(product_of_numbers)  # Output: 24

Die reduce-Funktion ist besonders nützlich, wenn Sie eine Liste oder ein anderes Iterable auf einen einzelnen Wert reduzieren möchten. Beispiele dafür sind Summierung, Produktbildung oder das Finden des maximalen Elements in einer Liste.


© Kevin Maurizi

  • modul/m323/learningunits/lu04/reduce.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1