简介
在 Python 中,我们可以使用 set() 和 intersection() 方法找到两个列表的交集。但是,如果我们想基于应用于两个列表中每个元素的特定函数来找到交集呢?在这个挑战中,你将创建一个函数,该函数接受两个列表和一个函数,并在将提供的函数应用于两个列表的每个元素后,返回两个列表中都存在的元素列表。
在 Python 中,我们可以使用 set() 和 intersection() 方法找到两个列表的交集。但是,如果我们想基于应用于两个列表中每个元素的特定函数来找到交集呢?在这个挑战中,你将创建一个函数,该函数接受两个列表和一个函数,并在将提供的函数应用于两个列表的每个元素后,返回两个列表中都存在的元素列表。
编写一个函数 intersection_by(a, b, fn),它接受两个列表 a 和 b,以及一个函数 fn。该函数应在将提供的函数应用于两个列表的每个元素之后,返回两个列表中都存在的元素列表。
a 和 b (1 <= a 的长度,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),它接受两个列表和一个函数,并在将提供的函数应用于两个列表的每个元素之后,返回两个列表中都存在的元素列表。