Programmation Python

Classe B3 ASO 2025-2026

Module 5

Listes, Dictionnaires et Chaînes de Caractères

À la fin de ce module, vous maîtriserez les trois structures de données fondamentales de Python et saurez utiliser les compréhensions pour écrire du code élégant et concis.

1. Les Listes : Collections Ordonnées et Dynamiques

1.1 Comprendre les Listes

Une liste en Python est une collection ordonnée et modifiable d'éléments. Elle peut contenir n'importe quel type de données et sa taille est dynamique. Les listes sont définies par des crochets [], et l'indexation commence à 0. L'indexation négative est aussi possible (-1 pour le dernier élément).

# Création et accès nombres = [10, 20, 30, 40, 50] print(f"Premier élément : {nombres[0]}") # 10 print(f"Dernier élément : {nombres[-1]}") # 50 # Le slicing : extraction de sous-listes print(f"Trois premiers : {nombres[:3]}") # [10, 20, 30] print(f"Ordre inversé : {nombres[::-1]}") # [50, 40, 30, 20, 10] # Modification nombres[1] = 25 print(f"Liste modifiée : {nombres}")

1.2 Méthodes Essentielles des Listes

Les listes possèdent de nombreuses méthodes pour les manipuler.

# Liste de travail fruits = ["pomme", "banane", "orange"] # Ajout d'éléments fruits.append("kiwi") # Ajoute à la fin fruits.insert(1, "mangue") # Insère à l'index 1 # Suppression d'éléments fruits.remove("banane") # Supprime la première occurrence dernier = fruits.pop() # Retire et retourne le dernier élément # Tri et inversion nombres = [3, 1, 4, 1, 5, 9] nombres.sort() # Tri en place print(f"Liste triée : {nombres}") nombres.reverse() # Inverse l'ordre print(f"Liste inversée : {nombres}")

1.3 Parcours de Listes

Python offre plusieurs façons de parcourir une liste.

langages = ["Python", "JavaScript", "Java"] # Parcours simple for langage in langages: print(langage) # Parcours avec enumerate (index + valeur) for index, langage in enumerate(langages, start=1): print(f"{index}. {langage}")

1.4 Listes Multidimensionnelles

Les listes peuvent contenir d'autres listes pour représenter des grilles ou des matrices.

matrice = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] print(f"Élément central : {matrice[1][1]}") # 5

2. Les Dictionnaires : Associations Clé-Valeur

2.1 Comprendre les Dictionnaires

Un dictionnaire associe des clés uniques à des valeurs. C'est idéal pour représenter des données structurées. Les dictionnaires sont définis avec des accolades {} et la syntaxe clé: valeur.

personne = { "nom": "Dupont", "prenom": "Marie", "age": 28 } # Accès aux valeurs print(f"Nom : {personne['nom']}") # Accès sécurisé avec get() print(f"Profession : {personne.get('profession', 'Non spécifiée')}") # Modification et ajout personne["age"] = 29 personne["ville"] = "Lyon" print(f"Personne mise à jour : {personne}")

2.2 Méthodes Avancées des Dictionnaires

Les dictionnaires offrent des méthodes pour accéder aux clés, valeurs, ou paires.

inventaire = {"pommes": 50, "bananes": 30, "oranges": 25} cles = inventaire.keys() valeurs = inventaire.values() paires = inventaire.items() print(f"Clés : {list(cles)}") print(f"Valeurs : {list(valeurs)}") print(f"Paires : {list(paires)}")

2.3 Parcours et Manipulation de Dictionnaires

Le parcours des dictionnaires peut se faire sur les clés, les valeurs, ou les deux.

# Parcours des paires clé-valeur (méthode recommandée) for cle, valeur in inventaire.items(): print(f"{cle} -> {valeur}")

2.4 Dictionnaires Imbriqués et Structures Complexes

Les dictionnaires peuvent contenir d'autres dictionnaires ou listes, créant des structures de données complexes.

3. Chaînes de Caractères : Manipulation de Texte

3.1 Nature et Propriétés des Chaînes

Les chaînes de caractères sont des séquences immuables de caractères. Toute opération qui semble modifier une chaîne crée en réalité une nouvelle chaîne.

3.2 Méthodes de Transformation et de Test

Python offre une riche collection de méthodes pour les chaînes.

texte = " Python Programming " # Méthodes de changement de casse et de nettoyage print(f"Majuscules : '{texte.upper()}'") print(f"Sans espaces : '{texte.strip()}'") # Méthode de remplacement nouvelle_phrase = texte.replace("Python", "Java") print(f"Remplacé : '{nouvelle_phrase}'") # Méthode de division donnees = "nom:age:ville" elements = donnees.split(":") print(f"Split : {elements}")

3.3 Formatage Avancé des Chaînes

Les f-strings sont la méthode moderne et préférée pour formater des chaînes.

nom = "Alice" age = 28 message = f"Je m'appelle {nom} et j'ai {age} ans." print(message)

4. Les Compréhensions : Élégance Pythonique

4.1 Compréhensions de Liste

Les compréhensions de liste permettent de créer des listes de manière concise et expressive en une seule ligne.

# Méthode traditionnelle carres_traditionnel = [] for i in range(1, 6): carres_traditionnel.append(i ** 2) # Avec compréhension de liste carres = [i ** 2 for i in range(1, 6)] print(f"Carrés : {carres}") # Avec condition pairs = [n for n in range(10) if n % 2 == 0] print(f"Pairs : {pairs}")

4.2 Compréhensions de Dictionnaire et d'Ensemble

Les compréhensions s'appliquent aussi aux dictionnaires et aux ensembles.

# Compréhension de dictionnaire carres_dict = {n: n**2 for n in range(1, 6)} print(f"Carrés (dict) : {carres_dict}") # Compréhension d'ensemble carres_set = {n**2 for n in range(-3, 4)} print(f"Carrés uniques : {carres_set}") # Pas de doublons

5. Exercices Pratiques

Exercice 1 : Gestionnaire de Contacts

Créez un système de gestion de contacts utilisant dictionnaires et listes pour ajouter, rechercher, modifier et supprimer des contacts.

Exercice 2 : Analyseur de Texte

Développez un analyseur de texte qui compte le nombre de mots, de caractères, et le mot le plus fréquent dans un texte donné.

Exercice 3 : Système de Panier d'Achat

Créez un panier d'achat avec gestion des produits (ajout, suppression, modification de quantité) et calcul du total.

6. Mini-Projet : Système de Bibliothèque

class Bibliotheque: def __init__(self): self.livres = {} self.id_livre = 1 def ajouter_livre(self, titre, auteur, isbn): livre_id = self.id_livre self.livres[livre_id] = { "titre": titre, "auteur": auteur, "isbn": isbn, "disponible": True } self.id_livre += 1 print(f"Livre '{titre}' ajouté avec l'ID {livre_id}.") def afficher_statistiques(self): total = len(self.livres) disponibles = sum(1 for livre in self.livres.values() if livre["disponible"]) print(f"\nTotal de titres : {total}") print(f"Copies disponibles : {disponibles}") # Utilisation biblio = Bibliotheque() biblio.ajouter_livre("1984", "George Orwell", "978-0452284234") biblio.ajouter_livre("Le Petit Prince", "Antoine de Saint-Exupéry", "978-2070612758") biblio.afficher_statistiques()

7. Points Clés à Retenir

  • Les listes sont ordonnées, modifiables et permettent les doublons.
  • Les dictionnaires associent des clés uniques à des valeurs pour des recherches rapides.
  • Les chaînes sont immuables ; toute "modification" crée une nouvelle chaîne.
  • Les compréhensions offrent une syntaxe concise et performante pour créer des listes, dictionnaires et ensembles.

Pour aller plus loin

Source: Graven - Développement