Bazı listenizde L
varsa ve bazı boolean işlevlerine göre P
iki listeye ayırmak istediğinizi varsayalım. Yani, l
öğesinin P(l)
öğesinin bir listesi ve P(l)
öğesinin yanlış olduğu başka bir listenin bir listesini istiyorsunuz.Bir listeyi ateşkes ve fals'lere filtrelemek için işlevsel bir programlama deyimi var mı?
ben şöyle Python bu uygulayabilirsiniz:
def multifilter(pred,seq):
trues,falses = [],[]
for x in seq:
if pred(x):
trues.append(x)
else:
falses.append(x)
return trues,falses
Benim soru: Bu işlevi gören fonksiyonel programlama deyim var mı?
Bunu beğendim, yaptığımdan daha genel. – wheaties
Bu muhtemelen Python'da yapmanın en iyi yoludur. jeneratörler ile de çalışır. sadece kusur tek-liner = P değil. Ama bunu biraz kötüye kullanmadan yapabilirdiniz: lambda pred, iterable: tuple (f (ön, t) f, t zip ([filter, filterfalse], tee (iterable))). bu değil .. o herhangi bir şekilde daha iyi – Claudiu
Ben sadece yakın zamanda itertools.tee 'kullanılmış değildi düşünüyorum ... teşekkürler! – perimosocordiae