List Intersection Based on Function

PythonPythonBeginner
Practice Now

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

Introduction

In Python, we can find the intersection of two lists using the set() and intersection() methods. However, what if we want to find the intersection based on a specific function applied to each element in both lists? In this challenge, you will create a function that takes in two lists and a function, and returns a list of elements that exist in both lists, after applying the provided function to each list element of both.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("`Python`")) -.-> python/BasicConceptsGroup(["`Basic Concepts`"]) python(("`Python`")) -.-> python/ControlFlowGroup(["`Control Flow`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/PythonStandardLibraryGroup(["`Python Standard Library`"]) python/BasicConceptsGroup -.-> python/comments("`Comments`") python/BasicConceptsGroup -.-> python/variables_data_types("`Variables and Data Types`") python/ControlFlowGroup -.-> python/conditional_statements("`Conditional Statements`") python/ControlFlowGroup -.-> python/for_loops("`For Loops`") python/ControlFlowGroup -.-> python/list_comprehensions("`List Comprehensions`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/FunctionsGroup -.-> python/function_definition("`Function Definition`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/ModulesandPackagesGroup -.-> python/using_packages("`Using Packages`") python/ModulesandPackagesGroup -.-> python/standard_libraries("`Common Standard Libraries`") python/PythonStandardLibraryGroup -.-> python/math_random("`Math and Random`") python/PythonStandardLibraryGroup -.-> python/data_collections("`Data Collections`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills python/comments -.-> lab-13663{{"`List Intersection Based on Function`"}} python/variables_data_types -.-> lab-13663{{"`List Intersection Based on Function`"}} python/conditional_statements -.-> lab-13663{{"`List Intersection Based on Function`"}} python/for_loops -.-> lab-13663{{"`List Intersection Based on Function`"}} python/list_comprehensions -.-> lab-13663{{"`List Intersection Based on Function`"}} python/lists -.-> lab-13663{{"`List Intersection Based on Function`"}} python/tuples -.-> lab-13663{{"`List Intersection Based on Function`"}} python/function_definition -.-> lab-13663{{"`List Intersection Based on Function`"}} python/importing_modules -.-> lab-13663{{"`List Intersection Based on Function`"}} python/using_packages -.-> lab-13663{{"`List Intersection Based on Function`"}} python/standard_libraries -.-> lab-13663{{"`List Intersection Based on Function`"}} python/math_random -.-> lab-13663{{"`List Intersection Based on Function`"}} python/data_collections -.-> lab-13663{{"`List Intersection Based on Function`"}} python/build_in_functions -.-> lab-13663{{"`List Intersection Based on Function`"}} end

List Intersection Based on Function

Write a function intersection_by(a, b, fn) that takes in two lists a and b, and a function fn. The function should return a list of elements that exist in both lists, after applying the provided function to each list element of both.

Input

  • Two lists a and b (1 <= len(a), len(b) <= 1000)
  • A function fn that takes in one argument and returns a value

Output

  • A list of elements that exist in both lists, after applying the provided function to each list element of both.
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]

Summary

In this challenge, you have learned how to find the intersection of two lists based on a specific function applied to each element in both. You have written a function intersection_by(a, b, fn) that takes in two lists and a function, and returns a list of elements that exist in both lists, after applying the provided function to each list element of both.

Other Python Tutorials you may like