소개
Python 에서 set()과 intersection() 메서드를 사용하여 두 리스트의 교집합을 찾을 수 있습니다. 하지만 두 리스트의 각 요소에 특정 함수를 적용한 결과를 기반으로 교집합을 찾고 싶다면 어떻게 해야 할까요? 이 챌린지에서는 두 개의 리스트와 함수를 입력으로 받아, 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 모두에 존재하는 요소들의 리스트를 반환하는 함수를 만들 것입니다.
Python 에서 set()과 intersection() 메서드를 사용하여 두 리스트의 교집합을 찾을 수 있습니다. 하지만 두 리스트의 각 요소에 특정 함수를 적용한 결과를 기반으로 교집합을 찾고 싶다면 어떻게 해야 할까요? 이 챌린지에서는 두 개의 리스트와 함수를 입력으로 받아, 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 모두에 존재하는 요소들의 리스트를 반환하는 함수를 만들 것입니다.
두 개의 리스트 a와 b와 함수 fn을 입력으로 받는 함수 intersection_by(a, b, fn)을 작성하세요. 이 함수는 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 모두에 존재하는 요소들의 리스트를 반환해야 합니다.
a와 b (1 <= len(a), len(b) <= 1000)fndef 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)을 작성했습니다.