Пересечение списков на основе функции

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Python мы можем найти пересечение двух списков с использованием методов set() и intersection(). Однако, что если мы хотим найти пересечение на основе определенной функции, применяемой к каждому элементу обоих списков? В этом испытании вы создадите функцию, которая принимает два списка и функцию, и возвращает список элементов, которые присутствуют в обоих списках, после применения указанной функции к каждому элементу обоих списков.

Пересечение списков на основе функции

Напишите функцию intersection_by(a, b, fn), которая принимает два списка a и b и функцию fn. Функция должна возвращать список элементов, которые присутствуют в обоих списках, после применения указанной функции к каждому элементу обоих списков.

Входные данные

  • Два списка a и b (1 <= len(a), len(b) <= 1000)
  • Функция fn, которая принимает один аргумент и возвращает значение

Выходные данные

  • Список элементов, которые присутствуют в обоих списках, после применения указанной функции к каждому элементу обоих списков.
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]

Резюме

В этом испытании вы узнали, как найти пересечение двух списков на основе определенной функции, применяемой к каждому элементу обоих списков. Вы написали функцию intersection_by(a, b, fn), которая принимает два списка и функцию, и возвращает список элементов, которые присутствуют в обоих списках, после применения указанной функции к каждому элементу обоих списков.