Frage

Was würden Sie den Namen einer Funktion, die eine Liste und eine Funktion übernimmt, und gibt Wahr zurück, wenn die Funktion auf alle Elemente der Anwendung das gleiche Ergebnis?

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

Sie haben ein schöne allgemeinen Namen für diese Sache akzeptiert? Bonus, wenn Sie in einer weniger klobig Art und Weise umsetzen können.

War es hilfreich?

Lösung

In .NET, in der Nähe ist Array.TrueForAll.

Vielleicht entsprechender SameForAll wäre für diese Funktion?

Andere Tipps

gehört Vollständige Version anzeigen über einen speziellen Namen für diese noch (etwas ähnlich Forall, aber nicht genau). IdenticalResults scheint in Ordnung so (Jon Seigel vorgeschlagen SameForAll, auch ganz nett)

Zusätzlich: Das ist die Art und Weise man dies in Haskell mit der all Funktion (TrueForall unter .NET) implementieren könnte

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

sameForAll f = ident . map f

Und 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:] ))

Kann denkt nicht an einen guten Namen so weit, aber diese macht das gleiche:

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

identical_results klingt wie ein angemessener Name für mich.

ich gepostet in einem Kommentar oben, aber die Formatierung wurde vermasselt, so ist es hier wieder für Klarheit:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top