Introdução
Em Python, podemos usar a função set() para obter a união de duas listas. No entanto, às vezes precisamos aplicar uma função a cada elemento de ambas as listas antes de obter a união. Neste desafio, você criará uma função que retorna a união de duas listas com base em uma função fornecida.
União de Listas Baseada em Função
Escreva uma função union_by(a, b, fn) que recebe duas listas a e b, e uma função fn. A função deve retornar uma lista que contém cada elemento que existe em qualquer uma das duas listas uma vez, após aplicar a função fornecida a cada elemento de ambas.
Para resolver este problema, você pode seguir estes passos:
- Crie um
setaplicandofna cada elemento ema. - Use uma compreensão de lista em combinação com
fnembpara manter apenas os valores que não estão contidos no conjunto criado anteriormente,_a. - Finalmente, crie um
seta partir do resultado anterior eae transforme-o em umalist.
A função deve ter os seguintes parâmetros de entrada:
a: uma lista de elementosb: uma lista de elementosfn: uma função que recebe um elemento e retorna um valor
A função deve retornar uma 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]
Resumo
Neste desafio, você aprendeu como criar uma função que retorna a união de duas listas com base em uma função fornecida. Você também aprendeu como aplicar uma função a cada elemento de uma lista, criar um conjunto (set) a partir de uma lista e transformar um conjunto em uma lista.