17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

442<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

À RETENIR Exemples à suivre<br />

Dans les exemples qui suivent, on considère que la liste est composée uniquement d’éléments du même<br />

type.<br />

Tri simple<br />

>>> liste = [1, 3, 2]<br />

>>> liste.sort()<br />

>>> liste<br />

[1, 2, 3]<br />

Le tri par défaut est croissant, mais une fonction peut être passée en paramètre pour<br />

déterminer l’algorithme de comparaison. La fonction reçoit deux éléments de la liste<br />

et doit renvoyer un entier pour déterminer l’ordre de ces deux objets : négative, positive<br />

ou nulle si les objets sont estimés égaux.<br />

Tri paramétré<br />

>>> liste = [1, 3, 2]<br />

>>> def mon_tri(el1, el2):<br />

... if el1 > el2:<br />

... return -1<br />

... if el2 < el2:<br />

... return 1<br />

... return 0<br />

...<br />

>>> liste.sort(mon_tri)<br />

>>> liste<br />

[3, 2, 1]<br />

Cette technique permet en outre, pour des éléments de types plus complexes,<br />

d’affiner la comparaison.<br />

Prenons l’exemple d’une classe A qui contient un attribut titre. Trier les éléments<br />

en fonction de cet attribut peut se faire en modifiant la fonction de comparaison.<br />

Fonction de comparaison de classes de type A<br />

>>> def mon_tri(el1, el2):<br />

... if el2.titre < el2.titre:<br />

... return 1<br />

... if el2.titre > el2.titre:<br />

... return -1<br />

... return 0<br />

...

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!