Jedes Mal, wenn ich Python verwende, überprüfe ich, wie Funktionen höherer Ordnung (Map, Filter, Reduce) verwendet werden, damit ich es als Memo belasse.
Außerdem habe ich kürzlich angefangen, Python 3 zu studieren, aber da sich der Schreibstil zwischen Python 2 und 3 geringfügig unterscheidet, werde ich beide zum Vergleich schreiben.
Erstens ist eine Funktion höherer Ordnung eine Funktion, die eine Funktion als Argument erhält. Beispielsweise wird es verwendet, wenn Sie für jedes Element des Arrays eine Verarbeitung durchführen möchten.
Es wird verwendet, wenn Sie alle Elemente </ font> eines Arrays verarbeiten möchten. Im folgenden Beispiel werden alle Elemente des Arrays verdoppelt und ausgegeben.
print map(lambda x: x * 2, range(1, 5))
print (list(map(lambda x: x * 2, range(1, 5))))
[2, 4, 6, 8]
Es wird verwendet, wenn Sie nur die Elemente verarbeiten möchten, die der Bedingung </ font> im Array entsprechen. Im folgenden Beispiel werden nur gerade Zahlen aus den Elementen des Arrays extrahiert.
print filter(lambda x: x % 2 == 0, range(1, 5))
print (list(filter(lambda x: x % 2 == 0, range(1, 5))))
[2, 4]
Verwenden Sie diese Option, wenn Sie mehrere Elemente zu einem </ font> kombinieren möchten. Insbesondere werden zwei Elemente vom Anfang des Arrays extrahiert und verarbeitet, und dann werden das Ergebnis und das nächste Element verarbeitet und so weiter.
In Python 3 wurde die Reduzierungsfunktion jedoch aus den Kernfunktionen von Python entfernt und kann nicht verwendet werden, ohne das Modul functools </ font> zu importieren.
Im folgenden Beispiel wird die Summe aller Elemente des Arrays berechnet.
print reduce(lambda x, y: x + y, range(1, 5))
import functools
print (functools.reduce(lambda x, y: x + y, range(1, 5)))
10
Zum Teil, weil ich nicht an Python 3 gewöhnt bin, ist mein persönlicher Eindruck, dass Python 2 einfacher zu schreiben ist ...
Recommended Posts