145 votes

Trouver le mode d'une liste

Compte tenu d'une liste d'éléments, rappelez-vous que le mode de la liste est l'élément qui se produit le plus souvent.

Je voudrais savoir comment créer une fonction qui peut trouver le mode d'une liste mais qui affiche un message si la liste n'a pas de mode (par exemple, tous les éléments de la liste n'apparaissent qu'une seule fois). Je veux faire cette fonction sans importer aucune fonction. J'essaie de faire ma propre fonction à partir de zéro.

188voto

David Dao Points 2321

Vous pouvez utiliser la fonction max et une clé. Jetez un œil à la fonction python max en utilisant 'key' et l'expression lambda.

max(set(lst), key=lst.count)

112voto

Christian Witts Points 4369

Vous pouvez utiliser le Counter fourni dans le package collections qui a une fonction mode -esque

from collections import Counter
data = Counter(your_list_in_here)
data.most_common()   # Returns all unique items and their counts
data.most_common(1)  # Returns the highest occurring item

Note : Le compteur est nouveau dans python 2.7 et n'est pas disponible dans les versions antérieures.

72voto

jabaldonedo Points 6108

Python 3.4 inclut la méthode statistics.mode, donc c'est simple :

>>> from statistics import mode
>>> mode([1, 1, 2, 3, 3, 3, 3, 4])
 3

Vous pouvez avoir n'importe quel type d'éléments dans la liste, pas seulement numérique :

>>> mode(["red", "blue", "blue", "red", "green", "red", "red"])
 'red'

29voto

mathwizurd Points 31

Il existe de nombreuses façons simples de trouver le mode d'une liste dans Python telles que :

import statistics
statistics.mode([1,2,3,3])
>>> 3

Ou, vous pouvez trouver le max par son nombre

max(array, key = array.count)

Le problème avec ces deux méthodes est qu'elles ne fonctionnent pas avec plusieurs modes. Le premier renvoie une erreur, tandis que le second renvoie le premier mode.

Pour trouver les modes d'un set, vous pouvez utiliser cette fonction :

def mode(array):
    most = max(list(map(array.count, array)))
    return list(set(filter(lambda x: array.count(x) == most, array)))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X