Ich brauche folgende Funktion:
Eingabe : alist
Ausgabe :
Truewenn alle Elemente in der Eingabeliste unter Verwendung des Standard-Gleichheitsoperators als gleich bewertet werden;FalseAndernfalls.
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
ANDalle 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 == boder identisch wie ina is b?