Ich brauche folgende Funktion:
Eingabe : alist
Ausgabe :
True
wenn alle Elemente in der Eingabeliste unter Verwendung des Standard-Gleichheitsoperators als gleich bewertet werden;False
Andernfalls.
Leistung : Natürlich ziehe ich es vor, keinen unnötigen Overhead zu verursachen.
Ich denke, es wäre am besten:
- Durchlaufen Sie die Liste
- Vergleichen Sie benachbarte Elemente
- und
AND
alle resultierenden Booleschen Werte
Aber ich bin mir nicht sicher, was der pythonischste Weg ist, das zu tun.
Das Fehlen einer Kurzschlussfunktion schmerzt nur bei einem langen Eingang (über ~ 50 Elemente), der frühzeitig ungleiche Elemente aufweist. Wenn dies häufig genug auftritt (wie oft hängt davon ab, wie lang die Listen sein können), ist der Kurzschluss erforderlich. Der beste Kurzschlussalgorithmus scheint @KennyTM zu sein checkEqual1
. Dies zahlt jedoch erhebliche Kosten:
- Bis zu 20x in nahezu identischen Leistungslisten
- Bis zu 2,5-fache Leistung auf Shortlists
Wenn die langen Eingänge mit frühen ungleichen Elementen nicht (oder nur selten genug) auftreten, ist kein Kurzschluss erforderlich. Dann ist die @ Ivo van der Wijk-Lösung bei weitem die schnellste.
functools.reduce(operator.eq, a)
es nicht vorgeschlagen wurde.
a == b
oder identisch wie ina is b
?