Supposons que je dispose d'une liste de mots et que je veuille trouver le nombre de fois où chaque mot apparaît dans cette liste.
Une façon évidente de procéder est de le faire :
words = "apple banana apple strawberry banana lemon"
uniques = set(words.split())
freqs = [(item, words.split().count(item)) for item in uniques]
print(freqs)
Mais je trouve que ce code n'est pas très bon, parce que le programme parcourt la liste de mots deux fois, une fois pour construire l'ensemble, et une deuxième fois pour compter le nombre d'apparitions.
Bien sûr, je pourrais écrire une fonction pour parcourir la liste et faire le décompte, mais ce ne serait pas très Pythonique. Existe-t-il donc une méthode plus efficace et plus pythonique ?
1 votes
Pas deux fois, il semble que la complexité soit O(N*N).
0 votes
Vous pouvez être intéressé par : stackoverflow.com/a/20308657/2534876 pour des questions de performance.