J'ai besoin de la fonction suivante:
Entrée: un list
Sortie:
-
True
si tous les éléments dans la liste d'entrée évaluer comme égaux les uns aux autres en utilisant la norme opérateur d'égalité; -
False
sinon.
Performance: bien sûr, je préfère ne pas entraîner de surcharge inutile.
Je pense qu'il serait préférable de:
- parcourir la liste
- comparer les éléments adjacents
- et
AND
les valeurs Booléennes
Mais je ne suis pas sûr de ce qui est le plus Pythonic façon de le faire.
EDIT:
Merci pour toutes les réponses grands. J'ai noté plusieurs, et c'était vraiment dur de choisir entre @KennyTM et @Ivo van der Wijk solutions.
L'absence de court-circuit fonctionnalité ne blesse sur une longue entrée (plus de ~50 éléments) qui ont des éléments dès le début. Si cela se produit assez souvent (à quelle fréquence dépend de combien de temps les listes pourraient l'être), le court-circuit est nécessaire. Le meilleur court-circuit de l'algorithme semble être @KennyTM checkEqual1
. Il est utile, cependant, un coût important pour ceci:
- jusqu'à 20x performances presque identiques listes
- jusqu'à 2,5 x de performance sur des listes
Si le long entrées avec le début de l'inégalité des éléments ne se produisent pas (ou produire suffisamment rarement), de court-circuit n'est pas nécessaire. Puis, de loin la plus rapide est @Ivo van der Wijk solution.