Question

Que voulez-vous nommer une fonction qui prend une liste et une fonction, et retourne Vrai si l'application de la fonction à tous les éléments donne le même résultat?

def identical_results(l, func):
    if len(l) <= 1: return True
    result = func(l[0])
    for el in l[1:]:
        if func(el) != result:
            return False
    return True

Y at-il un beau nom généralement accepté pour cette chose? Bonus si vous pouvez mettre en œuvre de façon moins maladroits.

Était-ce utile?

La solution

Dans .NET, le plus proche est Array.TrueForAll.

SameForAll serait peut-être plus approprié pour cette fonction?

Autres conseils

havn't entendu parler d'un nom spécial pour ce encore (un peu similaire à Forall, mais pas exactement). IdenticalResults semble correct si (Jon Seigel proposé SameForAll, également très agréable)

De plus: C'est la façon dont on pourrait mettre en œuvre cette Haskell en utilisant la fonction all (de TrueForall sous .NET)

ident [] = True
ident (x:xs) = all (== x) xs

sameForAll f = ident . map f

Et Python:

def idents(f, list):
    if len(list) <= 1:
        return True
    else:
        let fx0 = f(list[0])
        return all(( f(x) == fx0 for x in list[1:] ))

ne peut pas penser à un bon nom à ce jour, mais celui-ci fait la même chose:

def identical_results(l, func):
    return len(set(map(func, l))) <= 1

identical_results sonne comme un nom raisonnable pour moi.

Je posté dans un commentaire ci-dessus, mais le formatage ai foiré, si elle est ici à nouveau pour plus de clarté:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top