Einführung
In Python können wir die set()-Funktion verwenden, um die Vereinigung zweier Listen zu erhalten. Manchmal müssen wir jedoch eine Funktion auf jedes Element beider Listen anwenden, bevor wir die Vereinigung bilden. In dieser Herausforderung werden Sie eine Funktion erstellen, die die Vereinigung zweier Listen basierend auf einer bereitgestellten Funktion zurückgibt.
Liste-Vereinigung basierend auf Funktion
Schreiben Sie eine Funktion union_by(a, b, fn), die zwei Listen a und b sowie eine Funktion fn annimmt. Die Funktion sollte eine Liste zurückgeben, die jedes Element enthält, das in einer der beiden Listen vorkommt, nachdem die bereitgestellte Funktion auf jedes Element beider Listen angewendet wurde.
Um dieses Problem zu lösen, können Sie die folgenden Schritte ausführen:
- Erstellen Sie einen
set, indem Siefnauf jedes Element inaanwenden. - Verwenden Sie eine Listenkomprehension in Kombination mit
fnaufb, um nur die Werte zu behalten, die nicht in dem zuvor erstelltenset,_a, enthalten sind. - Schließlich erstellen Sie aus dem vorherigen Ergebnis und
aeinsetund wandeln es in eineListeum.
Die Funktion sollte die folgenden Eingabeparameter haben:
a: Eine Liste von Elementenb: Eine Liste von Elementenfn: Eine Funktion, die ein Element annimmt und einen Wert zurückgibt
Die Funktion sollte eine Liste von Elementen zurückgeben.
def union_by(a, b, fn):
_a = set(map(fn, a))
return list(set(a + [item for item in b if fn(item) not in _a]))
from math import floor
union_by([2.1], [1.2, 2.3], floor) ## [2.1, 1.2]
Zusammenfassung
In dieser Herausforderung haben Sie gelernt, wie Sie eine Funktion erstellen, die die Vereinigung zweier Listen basierend auf einer bereitgestellten Funktion zurückgibt. Sie haben auch gelernt, wie Sie eine Funktion auf jedes Element einer Liste anwenden, einen set aus einer Liste erstellen und einen set in eine Liste umwandeln.