Olé,

Le 28 septembre 2011 13:11, Alioune Dia <[email protected]> a écrit :

> 'lut
>
>> a quoi sert exactement le 'groupby' svp? et aussi, avez vous d'autres
>> maniere de realiser la meme chose? merci encore et a plus.
>>
>
> Voici l'exemple classique, quelqu'un comme moi qui connait pas itertools
> mais applique uniquement les bases algorithmiques, l’idéal bien sure
> c'est d’utiliser la les fonctions interne de python , mais il faut une
> mémoire d’éléphant
> pour les avoir  toutes en tête <ne dites pas a Thomas Noel que j'ai dis ça
> ;)'>)
>

Je suis le premier à ne pas les connaitre, ne t'en fais pas...  On a autre
chose à faire, non ?

>>> def count_words(s):
> ...    l =s.split()
> ...    m={}
> ...    for j in l:
> ...        m[j] =1 if j not in m else m[j] + 1
> ...    for k, l in m.items():
> ...        print k, l
>

Ca me semble un code efficace, même si je n'aime pas la ligne "m[j]=..."
avec son if mal placé... mais c'est une question de goût, moi je suis pas
fan de ce genre de sucre ;)

En utilisant un groupby, le code peut être bien obscurci :

    from itertools import groupby
    def count_words(s):
        for k, g in groupby(sorted(s.split())):
            print k, len(list(g))

En revanche je ne suis pas certain que ça donne une fonction très O(n)...
mais qui s'en soucie encore aujourd'hui, hélas ? ;)

a+
-- 
Thomas
--
Ce message a été envoyé à la liste [email protected]
Gestion de votre abonnement : http://dakarlug.org/liste
Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
Le site du DakarLUG : http://dakarlug.org

Répondre à