À 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).
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.
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.
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.