Liste Schnittmenge basierend auf Funktion

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Python können wir die Schnittmenge zweier Listen mithilfe der Methoden set() und intersection() finden. Was aber, wenn wir die Schnittmenge basierend auf einer spezifischen Funktion, die auf jedes Element in beiden Listen angewendet wird, finden möchten? In dieser Herausforderung werden Sie eine Funktion erstellen, die zwei Listen und eine Funktion als Eingabe nimmt und eine Liste von Elementen zurückgibt, die in beiden Listen existieren, nachdem die bereitgestellte Funktion auf jedes Listelement beider Listen angewendet wurde.

Liste Schnittmenge basierend auf Funktion

Schreiben Sie eine Funktion intersection_by(a, b, fn), die zwei Listen a und b sowie eine Funktion fn annimmt. Die Funktion sollte eine Liste von Elementen zurückgeben, die in beiden Listen existieren, nachdem die bereitgestellte Funktion auf jedes Listenelement beider Listen angewendet wurde.

Eingabe

  • Zwei Listen a und b (1 <= len(a), len(b) <= 1000)
  • Eine Funktion fn, die ein Argument annimmt und einen Wert zurückgibt

Ausgabe

  • Eine Liste von Elementen, die in beiden Listen existieren, nachdem die bereitgestellte Funktion auf jedes Listenelement beider Listen angewendet wurde.
def intersection_by(a, b, fn):
  _b = set(map(fn, b))
  return [item for item in a if fn(item) in _b]
from math import floor

intersection_by([2.1, 1.2], [2.3, 3.4], floor) ## [2.1]

Zusammenfassung

In dieser Herausforderung haben Sie gelernt, wie man die Schnittmenge zweier Listen basierend auf einer spezifischen Funktion, die auf jedes Element in beiden Listen angewendet wird, findet. Sie haben eine Funktion intersection_by(a, b, fn) geschrieben, die zwei Listen und eine Funktion annimmt und eine Liste von Elementen zurückgibt, die in beiden Listen existieren, nachdem die bereitgestellte Funktion auf jedes Listenelement beider Listen angewendet wurde.