Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Dernière révision Les deux révisions suivantes | ||
tris_alpha [2011/09/19 07:32] tyrtamos |
tris_alpha [2011/09/19 08:11] tyrtamos |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
Trier des chaines de caractères avec Python, c'est facile avec la méthode sort() ou la fonction sorted(), mais l' | Trier des chaines de caractères avec Python, c'est facile avec la méthode sort() ou la fonction sorted(), mais l' | ||
- | Il existe une méthode de base intégrée à Python pour trier des mots selon le dictionnaire français, et décrite par ailleurs sur ce site ([[http:// | + | Il existe une méthode de base intégrée à Python pour trier des mots selon le dictionnaire français, et décrite par ailleurs sur ce site ([[http:// |
Comme exemple d' | Comme exemple d' | ||
Ligne 12: | Ligne 12: | ||
On va donc définir une méthode simplifiée pour la comparaison de 2 chaines de caractères: | On va donc définir une méthode simplifiée pour la comparaison de 2 chaines de caractères: | ||
- | |||
* on définit l' | * on définit l' | ||
- | |||
* on fait la comparaison de 2 textes, caractère par caractère et de gauche à droite, en s' | * on fait la comparaison de 2 textes, caractère par caractère et de gauche à droite, en s' | ||
Ligne 23: | Ligne 21: | ||
</ | </ | ||
- | Ce qui fait que les éventuels caractères non-français rencontrés seront tout de même traités, mais au delà des caractères français. | + | Ce qui fait que les éventuels caractères non-français rencontrés seront tout de même traités, mais au delà des caractères français, et dans l' |
- | La fonction de comparaison prend 2 chaînes de caractères comme argument, et renvoie un nombre entier: | + | Comme le cmp() de Python, |
* négatif si la 1ère chaîne est avant la seconde | * négatif si la 1ère chaîne est avant la seconde | ||
* nul si elles sont égales | * nul si elles sont égales | ||
Ligne 170: | Ligne 168: | ||
Les chemins auraient pu contenir des espaces, des caractères accentués, des chiffres et autres caractères non-alphanumériques($, | Les chemins auraient pu contenir des espaces, des caractères accentués, des chiffres et autres caractères non-alphanumériques($, | ||
- | Avec la classe de comparaison, | + | Avec la comparaison |
+ | |||
+ | Pour déclencher des conversions d' | ||
<code python> | <code python> | ||
Ligne 201: | Ligne 201: | ||
</ | </ | ||
- | Ce qui donne, bien entendu, le même résultat. les chaines non-unicodes ont été simplement convertis en les supposant encodées en ' | + | Ce qui donne, bien entendu, le même résultat. les chaines non-unicodes ont été simplement convertis en les supposant encodées en ' |
Dans des cas plus complexes, on pourrait changer la chaine de comparaison alpha, ou empêcher la correction des voyelles liées. | Dans des cas plus complexes, on pourrait changer la chaine de comparaison alpha, ou empêcher la correction des voyelles liées. | ||
Ligne 454: | Ligne 454: | ||
* x = chaîne à rechercher | * x = chaîne à rechercher | ||
* L = liste triée | * L = liste triée | ||
- | * cmp = fonction de comparaison à utiliser (qui doit être la même que celle qui a servi au tri!) | + | * cmp = fonction de comparaison à utiliser (**//qui doit être la même que celle qui a servi au tri!//**) |
* key = fonction de conversion utile à ce qu'on recherche | * key = fonction de conversion utile à ce qu'on recherche | ||
Ligne 582: | Ligne 582: | ||
print t | print t | ||
</ | </ | ||
- | Le résultat correct | + | Le résultat correct [0,4999] est trouvé en... 2/10000 seconde! Ça vous suffira comme rapidité? |