Durchführen elementweiser Unterschiede in Listen: Lambda vs. Listenverständnis
Das Finden von Unterschieden zwischen benachbarten Elementen in einer Liste ist eine häufige Operation in Programmierung. In Python gibt es mehrere Möglichkeiten, dies zu erreichen, einschließlich der Verwendung von Lambda-Ausdrücken oder Listenverständnissen.
Lambda-Ausdruck:
Ein Lambda-Ausdruck kann zum Erstellen einer Funktion verwendet werden on-the-fly, mit dem dann jedes Element in der Liste bearbeitet werden kann. Zum Beispiel:
t = [1, 3, 6]
differences = list(map(lambda i, j: j - i, t[:-1], t[1:]))
In diesem Fall ist die Lambda-Funktion lambda i, j: j - i subtrahiert das (i)-te Element von seinem (i 1)-ten Element. Die Kartenfunktion wendet diese Funktion dann auf jedes Paar benachbarter Elemente in der Liste an.
Listenverständnis:
Listenverständnis bietet eine prägnante Möglichkeit, eine neue Liste basierend auf zu erstellen auf einer bestehenden Liste. Das folgende Listenverständnis führt die gleiche Operation wie der obige Lambda-Ausdruck aus:
differences = [j - i for i, j in zip(t[:-1], t[1:])]
Die Zip-Funktion ordnet die benachbarten Elemente in der Liste paarweise zu und das Listenverständnis iteriert über diese Paare. Für jedes Paar (i, j) wird die Differenz j - i berechnet.
Vergleich:
Beide Ansätze haben ihre Vor- und Nachteile. Lambda-Ausdrücke sind vielseitiger und können in einem breiteren Spektrum von Situationen verwendet werden. Listenverständnisse sind jedoch häufig präziser und leichter zu lesen und das Listenverständnis erzeugt die folgende Ausgabe:
[2, 3]Dies liegt daran, dass Die erste Differenz (3 - 1) ist 2 und die zweite Differenz (6 - 3) ist 3.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3