Diferencia de listas basada en función

Beginner

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

Introducción

En Python, podemos encontrar fácilmente la diferencia entre dos listas utilizando la función integrada set(). Sin embargo, ¿y si queremos encontrar la diferencia basada en una función específica aplicada a cada elemento de ambas listas? En este desafío, crearás una función que tome dos listas y una función, y devuelva la diferencia entre las dos listas después de aplicar la función proporcionada a cada elemento de ambas listas.

Diferencia de listas basada en función

Crea una función llamada difference_by(a, b, fn) que tome tres parámetros:

  • a: una lista de elementos
  • b: una lista de elementos
  • fn: una función que se aplicará a cada elemento de ambas listas

La función debe devolver una lista de elementos que están en la lista a pero no en la lista b, después de aplicar la función fn proporcionada a cada elemento de ambas listas.

Para resolver este problema, puedes seguir estos pasos:

  1. Crea un set, utilizando map() para aplicar fn a cada elemento en b.
  2. Utiliza una comprensión de lista en combinación con fn en a para conservar solo los valores no contenidos en el set previamente creado, _b.
def difference_by(a, b, fn):
  _b = set(map(fn, b))
  return [item for item in a if fn(item) not in _b]
from math import floor

difference_by([2.1, 1.2], [2.3, 3.4], floor) ## [1.2]
difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x'])
## [ { x: 2 } ]

Resumen

En este desafío, has aprendido cómo encontrar la diferencia entre dos listas basada en una función específica aplicada a cada elemento de ambas listas. También has practicado el uso de map(), set() y comprensión de listas para resolver el problema.