함수 기반 리스트 교집합

Beginner

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

소개

Python 에서 set()intersection() 메서드를 사용하여 두 리스트의 교집합을 찾을 수 있습니다. 하지만 두 리스트의 각 요소에 특정 함수를 적용한 결과를 기반으로 교집합을 찾고 싶다면 어떻게 해야 할까요? 이 챌린지에서는 두 개의 리스트와 함수를 입력으로 받아, 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 모두에 존재하는 요소들의 리스트를 반환하는 함수를 만들 것입니다.

함수 기반 리스트 교집합

두 개의 리스트 ab와 함수 fn을 입력으로 받는 함수 intersection_by(a, b, fn)을 작성하세요. 이 함수는 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 모두에 존재하는 요소들의 리스트를 반환해야 합니다.

입력

  • 두 개의 리스트 ab (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)을 작성했습니다.