Comment vérifier si une liste est triée en ordre croissant en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si une liste est triée par ordre croissant en Python. Le laboratoire se concentre sur la compréhension des listes triées et sur la manière de les manipuler à l'aide de la fonction sorted(). Vous apprendrez à créer une liste triée à partir d'une liste existante, à trier par ordre croissant et décroissant en utilisant le paramètre reverse, et à constater que la liste d'origine reste inchangée.

Le laboratoire vous guidera tout au long de la création d'un script Python nommé sort_list.py dans votre répertoire ~/project, de l'ajout de extraits de code (code snippets) et de l'exécution du script pour observer la sortie. Vous verrez comment la fonction sorted() renvoie une nouvelle liste triée sans modifier l'original et comment utiliser le paramètre reverse pour trier par ordre décroissant. Le laboratoire abordera ensuite d'autres méthodes pour vérifier si une liste est triée.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/booleans("Booleans") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/booleans -.-> lab-559536{{"Comment vérifier si une liste est triée en ordre croissant en Python"}} python/lists -.-> lab-559536{{"Comment vérifier si une liste est triée en ordre croissant en Python"}} python/build_in_functions -.-> lab-559536{{"Comment vérifier si une liste est triée en ordre croissant en Python"}} python/data_collections -.-> lab-559536{{"Comment vérifier si une liste est triée en ordre croissant en Python"}} end

Comprendre les listes triées

Dans cette étape, vous allez apprendre à connaître les listes triées en Python. Une liste triée est simplement une liste dont les éléments sont arrangés dans un ordre spécifique, soit croissant, soit décroissant. Comprendre comment créer et manipuler des listes triées est une compétence fondamentale en programmation Python.

Commençons par créer une simple liste de nombres :

numbers = [3, 1, 4, 1, 5, 9, 2, 6]
print(numbers)

Enregistrez ce code dans un fichier nommé sort_list.py dans votre répertoire ~/project. Vous pouvez utiliser l'éditeur VS Code pour créer et modifier ce fichier.

Maintenant, exécutez le script en utilisant la commande suivante dans votre terminal :

python sort_list.py

Vous devriez voir la liste d'origine affichée dans la console :

[3, 1, 4, 1, 5, 9, 2, 6]

Pour créer une version triée de cette liste, vous pouvez utiliser la fonction sorted(). La fonction sorted() prend un itérable (comme une liste) en entrée et renvoie une nouvelle liste avec tous les éléments triés par ordre croissant :

numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)

Modifiez votre fichier sort_list.py pour inclure la fonction sorted(). Exécutez le script à nouveau :

python sort_list.py

Maintenant, vous devriez voir la liste triée affichée dans la console :

[1, 1, 2, 3, 4, 5, 6, 9]

La liste d'origine numbers reste inchangée. La fonction sorted() crée une nouvelle liste triée sans modifier l'original.

Vous pouvez également trier la liste par ordre décroissant en utilisant le paramètre reverse :

numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)

Ajoutez ce code à votre fichier sort_list.py et exécutez-le :

python sort_list.py

Vous verrez la liste triée par ordre décroissant :

[9, 6, 5, 4, 3, 2, 1, 1]

Comprendre la fonction sorted() et comment utiliser le paramètre reverse est essentiel pour travailler avec des listes triées en Python.

Comparaison avec sorted()

Dans cette étape, vous allez approfondir votre connaissance de la fonction sorted() et la comparer avec une autre méthode de tri de listes : la méthode list.sort(). Comprendre les différences entre ces deux approches est essentiel pour une manipulation efficace et performante des listes en Python.

Commençons par revoir la fonction sorted(). Comme vous l'avez appris dans l'étape précédente, sorted() renvoie une nouvelle liste triée sans modifier la liste d'origine.

Maintenant, explorons la méthode list.sort(). Cette méthode trie la liste sur place, c'est-à-dire qu'elle modifie directement la liste d'origine.

Considérez l'exemple suivant :

numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()
print(numbers)

Ajoutez ce code à votre fichier sort_list.py, en remplaçant le contenu précédent. Ensuite, exécutez le script :

python sort_list.py

Vous devriez voir la liste d'origine numbers modifiée et triée par ordre croissant :

[1, 1, 2, 3, 4, 5, 6, 9]

Notez que numbers.sort() ne renvoie pas une nouvelle liste ; elle modifie la liste existante.

Voici une comparaison des deux méthodes :

  • sorted(list) :

    • Renvoie une nouvelle liste triée.
    • La liste d'origine reste inchangée.
    • Peut être utilisée avec n'importe quel itérable (par exemple, des tuples, des chaînes de caractères).
  • list.sort() :

    • Trie la liste sur place (modifie la liste d'origine).
    • Renvoie None.
    • Ne peut être utilisée qu'avec des listes.

Pour illustrer davantage la différence, essayons d'affecter le résultat de list.sort() à une variable :

numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = numbers.sort()
print(sorted_numbers)
print(numbers)

Exécutez ce code :

python sort_list.py

Vous verrez la sortie suivante :

None
[1, 1, 2, 3, 4, 5, 6, 9]

Comme vous pouvez le voir, sorted_numbers vaut None car numbers.sort() modifie la liste sur place et renvoie None. La liste numbers est maintenant triée.

Le choix entre sorted() et list.sort() dépend de vos besoins spécifiques. Si vous souhaitez conserver la liste d'origine intacte, utilisez sorted(). Si vous souhaitez modifier directement la liste et que vous n'avez pas besoin de conserver l'original, list.sort() est plus efficace.

Vérification avec all() et zip()

Dans cette étape, vous allez apprendre à utiliser les fonctions all() et zip() pour vérifier si une liste est triée. Ces fonctions offrent un moyen concis et efficace de vérifier l'ordre des éléments dans une liste.

Tout d'abord, comprenons la fonction zip(). La fonction zip() prend plusieurs itérables (par exemple, des listes) en entrée et renvoie un itérateur de tuples, où chaque tuple contient les éléments correspondants des itérables d'entrée.

Considérez l'exemple suivant :

list1 = [1, 2, 3]
list2 = [4, 5, 6]
zipped = zip(list1, list2)
print(list(zipped))

Ajoutez ce code à votre fichier sort_list.py, en remplaçant le contenu précédent. Ensuite, exécutez le script :

python sort_list.py

Vous devriez voir la sortie suivante :

[(1, 4), (2, 5), (3, 6)]

La fonction zip() a créé un itérateur qui produit des tuples contenant les éléments correspondants de list1 et list2.

Maintenant, comprenons la fonction all(). La fonction all() prend un itérable en entrée et renvoie True si tous les éléments de l'itérateur sont vrais, et False sinon.

Considérez l'exemple suivant :

bool_list = [True, True, True]
print(all(bool_list))

bool_list = [True, False, True]
print(all(bool_list))

Ajoutez ce code à votre fichier sort_list.py et exécutez-le :

python sort_list.py

Vous verrez la sortie suivante :

True
False

Maintenant, combinons zip() et all() pour vérifier si une liste est triée. L'idée est de comparer chaque élément avec l'élément suivant dans la liste et de vérifier si la liste est en ordre croissant.

numbers = [1, 2, 3, 4, 5]
is_sorted = all(numbers[i] <= numbers[i+1] for i in range(len(numbers)-1))
print(is_sorted)

numbers = [1, 2, 5, 4, 5]
is_sorted = all(numbers[i] <= numbers[i+1] for i in range(len(numbers)-1))
print(is_sorted)

Modifiez votre fichier sort_list.py pour inclure ce code. Exécutez le script à nouveau :

python sort_list.py

Vous devriez voir la sortie suivante :

True
False

Ce code utilise une expression génératrice avec zip() pour comparer les éléments adjacents de la liste. La fonction all() vérifie ensuite si toutes les comparaisons sont vraies, ce qui indique que la liste est triée.

Cette approche offre un moyen concis et efficace de vérifier si une liste est triée en Python.

Résumé

Dans ce laboratoire (lab), vous commencez par comprendre les listes triées en Python, qui sont des listes dont les éléments sont arrangés dans un ordre spécifique. Vous apprenez à créer une liste, puis à utiliser la fonction sorted() pour générer une nouvelle liste avec les éléments en ordre croissant, en observant que la liste d'origine reste inchangée.

En outre, vous explorez le tri en ordre décroissant en utilisant le paramètre reverse=True dans la fonction sorted(). Cela vous permet de créer une nouvelle liste avec les éléments arrangés du plus grand au plus petit, renforçant ainsi votre compréhension de la manipulation et de la création de listes triées en Python.