Introducción
En Python, podemos usar la función set() para obtener la unión de dos listas. Sin embargo, a veces necesitamos aplicar una función a cada elemento de ambas listas antes de obtener la unión. En este desafío, crearás una función que devuelva la unión de dos listas basada en una función proporcionada.
Unión de listas basada en función
Escribe una función union_by(a, b, fn) que tome dos listas a y b, y una función fn. La función debe devolver una lista que contenga cada elemento que existe en cualquiera de las dos listas una vez, después de aplicar la función proporcionada a cada elemento de ambas.
Para resolver este problema, puedes seguir estos pasos:
- Crea un
setaplicandofna cada elemento ena. - Utiliza una comprensión de lista en combinación con
fnenbpara conservar solo los valores no contenidos en elsetpreviamente creado,_a. - Finalmente, crea un
seta partir del resultado anterior yay conviértelo en unalist.
La función debe tener los siguientes parámetros de entrada:
a: una lista de elementosb: una lista de elementosfn: una función que toma un elemento y devuelve un valor
La función debe devolver una lista de elementos.
def union_by(a, b, fn):
_a = set(map(fn, a))
return list(set(a + [item for item in b if fn(item) not in _a]))
from math import floor
union_by([2.1], [1.2, 2.3], floor) ## [2.1, 1.2]
Resumen
En este desafío, aprendiste cómo crear una función que devuelve la unión de dos listas basada en una función proporcionada. También aprendiste cómo aplicar una función a cada elemento de una lista, crear un set a partir de una lista y transformar un set en una lista.