Bravo Dividee,
Je ne l'ai pas laissé tomber...
Mais j'ai des difficultés à penser en Python: donc j'écris des trucs 'en francais' et je les traduis au fur et à mesure.
Dans la deuxième version que j'ai proposé, je me suis attaché a réduire le patatoïdesque calcul de fq qui faisant trop faisait peu.
Le "ix" est plus pervers.
Le monstre sort du chapeau en écrivant:
- calculer la fréquence de chaque élément => fq
- a chaque élément dont la fréquence est >1 associer les index.
Les index, les index allez un coup de zip et on verra plus tard, par contre passer à:
- ix = les index de L
- fq = liste des éléments dont la fréquence est > 1
- à chaque élément de fq associer les index.
améliore l'algo... indépendamment du code.
L'histoire de l'enumerate(L) demande à écrire le code Python:
Première passe:
[ (a, [ i for i, c in ix if c == a ]) for a in fq ]
pas trop choquant...
Deuxième passe, on écrase tout dans le lambda:
[ (a, [ i for i, c in zip (range(len(L)), L) if c == a ]) for a in fq ]
Nous ne sommes plus dans l'algo. mais dans la lecture d'un code Python.
Et là, je dois avouer que je suis généralement un peu vanné de tous les vas et vient entre penser/écrire ou que je ne suis pas encore assez rapide pour sortir la construction qui va bien.:cry:
-W