Einführung
In Python ist die symmetrische Differenz zwischen zwei Listen eine neue Liste, die alle Elemente enthält, die in einer der ursprünglichen Listen vorhanden sind, aber nicht in beiden. In dieser Herausforderung werden wir eine Funktion schreiben, die die symmetrische Differenz zwischen zwei Listen zurückgibt, nachdem die bereitgestellte Funktion auf jedes Listelement beider Listen angewendet wurde.
Symmetrische Differenz basierend auf einer Funktion
Schreiben Sie eine Funktion symmetric_difference_by(a, b, fn), die zwei Listen a und b sowie eine Funktion fn annimmt. Die Funktion sollte eine neue Liste zurückgeben, die alle Elemente enthält, die in einer der ursprünglichen Listen vorhanden sind, aber nicht in beiden, nachdem die bereitgestellte Funktion auf jedes Listelement beider Listen angewendet wurde.
Um dieses Problem zu lösen, können Sie die folgenden Schritte ausführen:
- Erstellen Sie eine
Menge, indem Siefnauf jedes Element in jeder Liste anwenden. - Verwenden Sie eine Listenkomprehension in Kombination mit
fnauf jeder der beiden Listen, um nur die Werte zu behalten, die nicht in der zuvor erstellten Menge der anderen Liste enthalten sind. - Verketten Sie die beiden Listen, die in Schritt 2 erhalten wurden.
Die Funktion sollte die folgenden Parameter haben:
a: Eine Liste von Elementenb: Eine Liste von Elementenfn: Eine Funktion, die ein Element annimmt und einen neuen Wert zurückgibt
Die Funktion sollte eine neue Liste zurückgeben, die alle Elemente enthält, die in einer der ursprünglichen Listen vorhanden sind, aber nicht in beiden, nachdem die bereitgestellte Funktion auf jedes Listelement beider Listen angewendet wurde.
def symmetric_difference_by(a, b, fn):
(_a, _b) = (set(map(fn, a)), set(map(fn, b)))
return [item for item in a if fn(item) not in _b] + [item
for item in b if fn(item) not in _a]
from math import floor
symmetric_difference_by([2.1, 1.2], [2.3, 3.4], floor) ## [1.2, 3.4]
Zusammenfassung
In dieser Herausforderung haben wir gelernt, wie man eine Funktion schreibt, die die symmetrische Differenz zwischen zwei Listen zurückgibt, nachdem die bereitgestellte Funktion auf jedes Listelement beider Listen angewendet wurde. Wir haben dazu eine Menge und eine Listenkomprehension verwendet.