소개
Python 에서 set() 함수를 사용하여 두 리스트의 합집합을 구할 수 있습니다. 하지만, 때로는 합집합을 구하기 전에 두 리스트의 각 요소에 함수를 적용해야 할 필요가 있습니다. 이 챌린지에서는 제공된 함수를 기반으로 두 리스트의 합집합을 반환하는 함수를 만들 것입니다.
Python 에서 set() 함수를 사용하여 두 리스트의 합집합을 구할 수 있습니다. 하지만, 때로는 합집합을 구하기 전에 두 리스트의 각 요소에 함수를 적용해야 할 필요가 있습니다. 이 챌린지에서는 제공된 함수를 기반으로 두 리스트의 합집합을 반환하는 함수를 만들 것입니다.
두 리스트 a와 b와 함수 fn을 인자로 받는 함수 union_by(a, b, fn)을 작성하십시오. 이 함수는 두 리스트의 각 요소에 제공된 함수를 적용한 후, 두 리스트 중 하나라도 존재하는 모든 요소를 한 번씩 포함하는 리스트를 반환해야 합니다.
이 문제를 해결하려면 다음 단계를 따를 수 있습니다.
a의 각 요소에 fn을 적용하여 set을 생성합니다.b에 fn과 함께 사용하여 이전에 생성된 set, _a에 포함되지 않은 값만 유지합니다.a로부터 set을 생성하고 이를 list로 변환합니다.이 함수는 다음과 같은 입력 매개변수를 가져야 합니다.
a: 요소의 리스트b: 요소의 리스트fn: 요소를 받아 값을 반환하는 함수이 함수는 요소의 리스트를 반환해야 합니다.
def union_by(a, b, fn):
_a = set(map(fn, a))
return list(set(a + [item for item in b if fn(item) not in _a]))
from math import floor
union_by([2.1], [1.2, 2.3], floor) ## [2.1, 1.2]
이 챌린지에서는 제공된 함수를 기반으로 두 리스트의 합집합을 반환하는 함수를 만드는 방법을 배웠습니다. 또한 리스트의 각 요소에 함수를 적용하고, 리스트에서 set 을 생성하며, set 을 리스트로 변환하는 방법도 배웠습니다.