Il est parfois important de changer l'ordre des éléments. Cela peut être pratique pour des classements ou mettre en relation deux séquences. sort() va faire ce travail très simplement :
liste1 = [5,10,3,7] liste1.sort() liste1 > [3, 5, 7, 10]
Cela marche aussi avec les éléments textuels de la liste :
liste1 = ["Descartes","Erasme","Montaigne","Montesquieu","Diderot","Rousseau","Voltaire"] liste1.sort() liste1 > ['Descartes', 'Diderot', 'Erasme', 'Montaigne', 'Montesquieu', 'Rousseau', 'Voltaire']
En revanche, les chaînes de caractères et les tupples étant non mutables, ils ne peuvent évidemment pas être modifiés par cette fonction qui ne peut s'appliquer.
nom = "cedric" nom.sort() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'str' object has no attribute 'sort'
Si la liste contient des éléments de type int ou float et des éléments str, alors les éléments de type str sont placés à la fin alors que la suite est bien ordonnée en ce qui concerne les nombres qu'est-ce que soit leur type.
liste1 = ["Descartes","Erasme","Montaigne","Montesquieu","Diderot","Rousseau","Voltaire"] liste2 = [5,10,7,3] liste1 = liste1+liste2 liste1.sort() liste1 > [3, 5, 7, 10, 'Descartes', 'Descartes', 'Diderot', 'Erasme', 'Montaigne', 'Montesquieu', 'Rousseau', 'Voltaire'] liste3 = [1.5, 3.5, 6.2, 10.5] liste1 = liste1+liste3 liste1.sort() liste1 > [1.5, 3, 3.5, 5, 6.2, 7, 10, 10.5, 'Descartes', 'Descartes', 'Diderot', 'Erasme', 'Montaigne', 'Montesquieu', 'Rousseau', 'Voltaire']
Avec les dictionnaires, les choses se gâtent un peu. Que trier ? les clés, les valeurs ? En utilisant la fonction sorted, on obtient un premier résultat.
dictionnaire2 = {'nom':'Descartes','prenom':'René','age':'?'}
dictionnaire2
> {'nom': 'Descartes', 'age': '?', 'prenom': 'Ren\xc3\xa9'}
sorted(dictionnaire2)
> ['age', 'nom', 'prenom']
nom = "cedric" nom.count('c') > 2
ou sur des listes :
liste1=["Descartes","Erasme","Montaigne","Montesquieu","Diderot","Rousseau","Voltaire"] liste1.count('Descartes') > 1 liste1.append('Descartes') liste1.count('Descartes') > 2
On trie aussi souvent pour connaître la plus petite et la plus grande valeur. Il est alors possible d'utiliser les fonctions de bases min() et max().
liste2 = [5,10,7,3] min(liste2) > 3 max(liste2) > 10
et même d'en effectuer la somme avec sum() ce qui évite parfois d'avoir recours à des procédés plus longs et complexes :
liste2 = [5,10,7,3] sum(liste2) > 25
min() et max() fonctionnent aussi sur les chaînes et les éléments textuels :
nom = "cedric" min(nom) > 'c' max(nom) > 'r' liste1=["Descartes","Erasme","Montaigne","Montesquieu","Diderot","Rousseau","Voltaire"] max(liste1) > 'Voltaire'
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.