10.1 Caractéristiques des tableaux dynamiques
Les tableaux dynamiques sont des structures de données qui peuvent modifier leur taille pendant l'exécution du programme. Ils permettent de gérer efficacement une collection d'éléments, d'ajouter et de supprimer des éléments sans avoir besoin de définir à l'avance la taille du tableau.
En Python, le tableau dynamique est la liste (classe intégrée list), qui permet d'ajouter, de supprimer et de modifier des éléments à n'importe quelle position.
Caractéristiques des tableaux dynamiques :
- Taille modifiable : Les tableaux dynamiques peuvent s'agrandir et se réduire selon les besoins.
- Accès rapide par index : L'accès aux éléments se fait en un temps constant
O(1). - Gestion automatique de la mémoire : Python gère automatiquement l'allocation et la libération de la mémoire pour les listes.
- Méthodes pratiques pour travailler avec les éléments : Les méthodes intégrées permettent d'ajouter, de supprimer et de modifier facilement des éléments.
Exemple de création et d'utilisation d'un tableau dynamique en Python :
# Création d'une liste
dynamic_array = [1, 2, 3, 4, 5]
# Ajout d'un élément
dynamic_array.append(6)
print(dynamic_array) # Sortie : [1, 2, 3, 4, 5, 6]
# Suppression d'un élément
dynamic_array.remove(3)
print(dynamic_array) # Sortie : [1, 2, 4, 5, 6]
# Accès par index
print(dynamic_array[2]) # Sortie : 4
# Modification d'un élément
dynamic_array[2] = 10
print(dynamic_array) # Sortie : [1, 2, 10, 5, 6]
10.2 Avantages et inconvénients des tableaux dynamiques
Les tableaux dynamiques ont leurs avantages et leurs inconvénients. Regardons-les de plus près.
Avantages :
- Flexibilité : Les tableaux dynamiques peuvent changer de taille selon les besoins du programme, ce qui permet de gérer efficacement la mémoire et de traiter des volumes de données variables.
- Accès rapide par index : Comme les tableaux statiques, les tableaux dynamiques permettent d'accéder rapidement aux éléments par index en un temps constant
O(1). - Facilité d'utilisation : Les méthodes intégrées de Python pour travailler avec les listes (par exemple, append, remove, insert) facilitent la manipulation des éléments et rendent le code plus lisible et maintenable.
- Gestion automatique de la mémoire : Python gère automatiquement la mémoire pour les tableaux dynamiques, libérant ainsi le programmeur de la nécessité d'allouer et de libérer manuellement la mémoire.
Inconvénients :
- Redistribution de la mémoire : Lors de l'augmentation de la taille d'un tableau dynamique, une redistribution de la mémoire peut être nécessaire, impliquant la copie d'éléments vers une nouvelle zone de mémoire. Cela peut ralentir temporairement l'exécution du programme.
- Coûts d'insertion et de suppression d'éléments : L'insertion et la suppression d'éléments au milieu du tableau nécessitent un décalage des éléments, ce qui prend
O(n)de temps. - Légèrement plus de frais généraux de gestion : Par rapport aux langages de bas niveau comme C, les tableaux dynamiques en Python ont des frais généraux supplémentaires liés à la gestion automatique de la mémoire et au traitement des exceptions.
10.3 Exemples d'utilisation et d'application
Regardons quelques exemples d'utilisation des tableaux dynamiques en Python.
1. Implémentation d'une liste de tâches dynamique :
tasks = []
# Ajout de tâches
tasks.append("Task 1")
tasks.append("Task 2")
tasks.append("Task 3")
# Exécution d'une tâche et suppression de la liste
completed_task = tasks.pop(0)
print(f"Completed: {completed_task}")
print(f"Remaining tasks: {tasks}") # Sortie : Remaining tasks: ['Task 2', 'Task 3']
2. Implémentation d'une liste dynamique d'objets :
students = []
# Ajout d'étudiants
students.append("Alice")
students.append("Bob")
students.append("Charlie")
# Suppression d'un étudiant
students.remove("Bob")
print(f"Students after removal: {students}") # Sortie : Students after removal: ['Alice', 'Charlie']
# Ajout d'un étudiant à une position spécifique
students.insert(1, "David")
print(f"Students after insertion: {students}") # Sortie : Students after insertion: ['Alice', 'David', 'Charlie']
GO TO FULL VERSION