基于函数的列表交集
在对两个列表的每个元素应用提供的函数之后,返回存在于两个列表中的元素列表。
- 使用
map()
函数将fn
应用于b
中的每个元素,创建一个set
。 - 结合
a
上的列表推导式和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]