Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3

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.

Ausführungsumgebung

Kartenfunktion

Es wird verwendet, wenn Sie alle Elemente </ font> eines Arrays verarbeiten möchten. Im folgenden Beispiel werden alle Elemente des Arrays verdoppelt und ausgegeben.

  • Python 2
print map(lambda x: x * 2, range(1, 5))
  • Python 3
print (list(map(lambda x: x * 2, range(1, 5))))
  • Ausführungsergebnis
[2, 4, 6, 8]

Filterfunktion

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.

  • Python 2
print filter(lambda x: x % 2 == 0, range(1, 5))
  • Python 3
print (list(filter(lambda x: x % 2 == 0, range(1, 5))))
  • Ausführungsergebnis
[2, 4]

Funktion reduzieren

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.

  • Python 2
print reduce(lambda x, y: x + y, range(1, 5))
  • Python 3
import functools

print (functools.reduce(lambda x, y: x + y, range(1, 5)))
  • Ausführungsergebnis
10

Zum Teil, weil ich nicht an Python 3 gewöhnt bin, ist mein persönlicher Eindruck, dass Python 2 einfacher zu schreiben ist ...

Referenzmaterial

  • http://www.python-course.eu/python3_lambda.php

Recommended Posts