Pourquoi listes en Python ?
Les listes sont un type de données fondamental en Python et leur utilisation est omniprésente dans la programmation, que ce soit pour stocker des informations, gérer des collections d'éléments ou simplifier les opérations sur ces éléments. Un développeur peut avoir besoin de manipuler des listes en quotidien pour:
- Stocker une liste de tâches à accomplir.
- Gérer un ensemble de données provenant d'une API.
- Manipuler des tableaux de nombres ou des tableaux d'objets.
Un cas concret serait un gestionnaire de tâches simple où chaque tâche est stockée dans une liste. Par exemple, on pourrait avoir une liste qui contient les noms et les dates de début et de fin de chaque tâche à accomplir.
Prerequis
Avant de commencer ce tutoriel, il est recommandé d'avoir une connaissance de base de Python. Voici quelques prérequis :
- Connaissances en syntaxe de base de Python
- Comprendre les structures de contrôle (if, for, while)
- Savoir utiliser les fonctions
Il n'est pas nécessaire d'installer des outils supplémentaires pour ce tutoriel car nous ne travaillerons pas avec des bibliothèques tierces. Cependant, si vous souhaitez écrire et exécuter le code directement sur votre ordinateur, vous aurez besoin de :
- Un environnement de développement intégré (IDE) comme PyCharm, VSCode ou même un simple editor texte comme Sublime Text ou Atom.
- Python installé sur votre système.
Concepts fondamentaux
Création d'une liste
Une liste en Python est créée en plaçant les éléments entre crochets [], séparés par des virgules. Par exemple:
liste_numerique = [1, 2, 3, 4, 5]
##
liste_mixed = ['a', 'b', 1, 2, True]
Accès aux éléments
Les éléments d'une liste sont accessibles via leur index. L'index commence à 0 pour le premier élément. Par exemple:
premier_element = liste_numerique[0] # Résultat : 1
##
dernier_element = liste_mixed[-1] # Résultat : True
Modification des éléments
Les éléments d'une liste peuvent être modifiés en utilisant leur index. Par exemple:
liste_numerique[1] = 20 # Liste devient [1, 20, 3, 4, 5]
##
liste_mixed.append('c') # Liste devient ['a', 'b', 1, 2, True, 'c']
Suppression d'éléments
Des éléments peuvent être supprimés en utilisant les méthodes remove() ou pop(). Par exemple:
liste_numerique.remove(3) # Liste devient [1, 20, 4, 5]
##
element_supprime = liste_mixed.pop(1) # Liste devient ['a', 1, True, 'c'], element_supprime vaut 'b'
Mise en pratique : projet fil rouge
Nous allons construire un simple gestionnaire de tâches à partir d'une liste. Ce gestionnaire permettra d'ajouter des tâches, de les afficher et de les supprimer.
Étape 1 : Création du code initial
Créez un fichier appelé todo_manager.py.
def ajouter_tache(taches, nouvelle_tache):
"""Ajoute une tâche à la liste des tâches."""
taches.append(nouvelle_tache)
def afficher_taches(taches):
"""Affiche toutes les tâches."""
for i, tache in enumerate(taches, start=1):
print(f"{i}. {tache}")
def supprimer_tache(taches, index):
"""Supprime une tâche par index."""
try:
del taches[index-1]
except IndexError:
print("Index invalide")
if __name__ == "__main__":
taches = []
while True:
print("\nGestionnaire de Tâches")
print("1. Ajouter une tâche")
print("2. Afficher les tâches")
print("3. Supprimer une tâche")
print("4. Quitter")
choix = input("Choisissez une option (1/2/3/4): ")
if choix == '1':
nouvelle_tache = input("Entrez la tâche à ajouter: ")
ajouter_tache(taches, nouvelle_tache)
elif choix == '2':
afficher_taches(taches)
elif choix == '3':
index = int(input("Entrez l'index de la tâche à supprimer: "))
supprimer_tache(taches, index)
elif choix == '4':
break
else:
print("Option invalide. Veuillez choisir une option valide.")
Étape 2 : Exécution du code
Pour exécuter le script, ouvrez un terminal et entrez la commande suivante :
python todo_manager.py
Étape 3 : Utilisation du gestionnaire de tâches
Vous devriez voir une interface simple qui vous permet d'ajouter des tâches, d'afficher les tâches existantes et de les supprimer en utilisant un index.
Erreurs frequentes et debugging
Erreur 1 : IndexError
taches = ['Acheter du lait']
del taches[2] # IndexError: list assignment index out of range
##
taches = ['Acheter du lait']
if len(taches) > 2:
del taches[2]
Erreur 2 : TypeError
taches = ['Acheter du lait', 'Faire le ménage']
taches.append(123) # TypeError: can only concatenate list (not "int") to list
##
taches = ['Acheter du lait', 'Faire le ménage']
taches.append('Manger')
Erreur 3 : KeyError
tache = {'nom': 'Acheter du lait', 'date': '2023-10-05'}
print(tache['heure']) # KeyError: 'heure'
##
tache = {'nom': 'Acheter du lait', 'date': '2023-10-05'}
if 'heure' in tache:
print(tache['heure'])
else:
print("Heure non spécifiée")
Pour aller plus loin
1. Compréhension de liste (List Comprehensions)
La compréhension de liste est une technique puissante pour créer des listes en Python de manière concise.
carrés_pairs = [x**2 for x in range(10) if x % 2 == 0]
print(carrés_pairs) # Résultat : [0, 4, 16, 36, 64]
2. Utilisation de filter() et map()
La fonction filter() permet de filtrer les éléments d'une liste en utilisant une condition, tandis que la fonction map() applique une fonction à chaque élément de la liste.
nombre = [1, 2, 3, 4, 5]
résultat = list(filter(lambda x: x % 2 == 0, nombre)) + list(map(lambda x: x * 2, filter(lambda x: x % 2 != 0, nombre)))
print(résultat) # Résultat : [1, 4, 3, 8, 5]
3. Manipulation de listes avec itertools
La bibliothèque standard itertools offre des fonctions utiles pour manipuler les itérables.
import itertools
##
liste1 = [1, 2, 3]
liste2 = ['a', 'b', 'c']
fusionnée = list(itertools.chain(liste1, liste2))
print(fusionnée) # Résultat : [1, 2, 3, 'a', 'b', 'c']
Défi pratique
Créez un script qui permet de gérer une collection d'articles. Chaque article doit avoir un nom et un prix. Le script devrait permettre d'afficher tous les articles, de rechercher un article par son nom, et de supprimer un article.
def ajouter_article(articles, nom, prix):
"""Ajoute un article à la liste des articles."""
articles.append({'nom': nom, 'prix': prix})
def afficher_articles(articles):
"""Affiche tous les articles."""
for i, article in enumerate(articles, start=1):
print(f"{i}. {article['nom']} - Prix : {article['prix']}")
def rechercher_article(articles, nom_recherche):
"""Recherche un article par son nom."""
found = any(article['nom'] == nom_recherche for article in articles)
if found:
print("Article trouvé.")
else:
print("Article non trouvé.")
def supprimer_article(articles, index):
"""Supprime un article par index."""
try:
del articles[index-1]
except IndexError:
print("Index invalide")
if __name__ == "__main__":
articles = []
while True:
print("\nGestionnaire d'Articles")
print("1. Ajouter un article")
print("2. Afficher les articles")
print("3. Rechercher un article")
print("4. Supprimer un article")
print("5. Quitter")
choix = input("Choisissez une option (1/2/3/4/5): ")
if choix == '1':
nom = input("Entrez le nom de l'article: ")
prix = float(input("Entrez le prix de l'article: "))
ajouter_article(articles, nom, prix)
elif choix == '2':
afficher_articles(articles)
elif choix == '3':
nom_recherche = input("Entrez le nom de l'article à rechercher: ")
rechercher_article(articles, nom_recherche)
elif choix == '4':
index = int(input("Entrez l'index de l'article à supprimer: "))
supprimer_article(articles, index)
elif choix == '5':
break
else:
print("Option invalide. Veuillez choisir une option valide.")
Pour exécuter ce script, utilisez la commande suivante :
python inventory_manager.py
Ce défi vous aidera à appliquer les concepts appris sur les listes en Python tout en développant vos compétences de programmation.