Python verfügt über integrierte Funktionen map() und reduce().
Wenn Sie Googles berühmtes Papier „MapReduce: Simplified Data Processing on Large Clusters“ gelesen haben, können Sie das Konzept von Map/Reduce grob verstehen.
Schauen wir uns zuerst die Karte an. Die Funktion „map()“ empfängt zwei Parameter, einer ist eine Funktion und der andere ist eine iterierbare Karte, wendet die übergebene Funktion nacheinander auf jedes Element der Sequenz an und gibt das Ergebnis als neuen Iterator zurück.
Zum Beispiel haben wir eine Funktion f(x)=x2, und wir möchten diese Funktion auf eine Liste [1, 2, 3, 4, 5, 6, 7, 8, 9]. Sie können map() verwenden, um es wie folgt zu implementieren:
Jetzt verwenden wir Python-Code, um es zu implementieren:
>>> def f(x):... return x * x ...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])>>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]
map() Übergabe Der erste Parameter ist f, das Funktionsobjekt selbst. Da das Ergebnis r ein Iterator ist und Iterator eine Lazy-Sequenz ist, verwenden wir die Funktion list(), um es berechnen zu lassen die gesamte Sequenz. Und gibt eine Liste zurück.
Sie denken vielleicht, dass Sie die Funktion map() nicht benötigen. Sie können das Ergebnis auch berechnen, indem Sie eine Schleife schreiben:
L = []for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]: L.append(f(n)) print(L)
Es ist tatsächlich möglich, Aber können Sie aus der obigen Schleife den Code auf einen Blick verstehen: „Wenden Sie f(x) auf jedes Element der Liste an und generieren Sie als Ergebnis eine neue Liste“?
Also abstrahiert map() tatsächlich die Operationsregeln. Daher können wir nicht nur einfaches f(x)=x2 berechnen, sondern auch beliebige Komplexe Funktionen wandeln beispielsweise alle Zahlen dieser Liste in Strings um:
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
Das obige ist der detaillierte Inhalt vonWas ist MapReduce? Erfahren Sie in drei Minuten, wie MapReduce funktioniert.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!