基于函数的列表交集

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Python 中,我们可以使用 set()intersection() 方法找到两个列表的交集。但是,如果我们想基于应用于两个列表中每个元素的特定函数来找到交集呢?在这个挑战中,你将创建一个函数,该函数接受两个列表和一个函数,并在将提供的函数应用于两个列表的每个元素后,返回两个列表中都存在的元素列表。

基于函数的列表交集

编写一个函数 intersection_by(a, b, fn),它接受两个列表 ab,以及一个函数 fn。该函数应在将提供的函数应用于两个列表的每个元素之后,返回两个列表中都存在的元素列表。

输入

  • 两个列表 ab (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),它接受两个列表和一个函数,并在将提供的函数应用于两个列表的每个元素之后,返回两个列表中都存在的元素列表。