Supongamos que tiene alguna lista L
y desea dividirla en dos listas basadas en alguna función booleana P
. Es decir, desea una lista de todos los elementos l
donde P(l)
es verdadero y otra lista donde P(l)
es falso.¿Hay una expresión de programación funcional para filtrar una lista en trues y falsos?
puedo implementar esto en Python, así:
def multifilter(pred,seq):
trues,falses = [],[]
for x in seq:
if pred(x):
trues.append(x)
else:
falses.append(x)
return trues,falses
Mi pregunta: ¿Existe un lenguaje de programación funcional que logra esto?
Me gusta eso, es más general que lo que hice. – wheaties
esta es probablemente la mejor manera de hacerlo en Python. funciona con generadores también El único defecto es que no es un trazador de líneas = P. Pero podrías hacer eso con un poco de abuso: 'lambda pred, iterable: tuple (f (pred, t) para f, t en zip ([filter, filterfalse], tee (iterable)))'. no es que eso sea ... mejor en cualquier forma – Claudiu
Estaba pensando que no había usado 'itertools.tee' hace bastante poco ... ¡gracias! – perimosocordiae