Structures de données en Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez explorer les structures de données fondamentales de Python : les listes, les tuples, les ensembles (sets) et les dictionnaires. En vous appuyant sur vos connaissances acquises lors des sessions précédentes, vous apprendrez à créer, manipuler et utiliser ces structures polyvalentes. Cette expérience pratique approfondira votre compréhension des concepts clés de Python et vous préparera à gérer des données plus complexes dans vos futurs programmes.

Ceci est un atelier guidé, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les consignes pour terminer chaque étape et acquérir une expérience concrète. Les données historiques montrent qu'il s'agit d'un atelier de niveau débutant avec un taux de réussite de 91 %. Il a reçu un taux d'avis positifs de 99 % de la part des apprenants.

Manipuler les listes

Dans cette étape, vous allez découvrir les listes, qui sont des collections d'éléments ordonnées et modifiables (mutables) en Python.

Ouvrez l'interpréteur Python en tapant la commande suivante dans votre terminal :

python

Vous devriez voir l'invite de commande Python (>>>), indiquant que vous êtes maintenant dans le shell interactif Python.

Python Interpreter

Commençons par créer une liste. Dans l'interpréteur Python, saisissez ce qui suit :

fruits = ["apple", "banana", "cherry"]
print(fruits)

Sortie :

['apple', 'banana', 'cherry']

En Python, les listes sont créées à l'aide de crochets [], les éléments étant séparés par des virgules.

Vous pouvez accéder aux éléments d'une liste en utilisant leur index. N'oubliez pas que Python utilise une indexation commençant par zéro :

print(fruits[0])  ## Premier élément

Sortie :

apple
print(fruits[-1])  ## Dernier élément

Sortie :

cherry

Les listes sont mutables, ce qui signifie que vous pouvez modifier leur contenu :

fruits[1] = "blueberry"
print(fruits)

Sortie :

['apple', 'blueberry', 'cherry']

Vous pouvez ajouter des éléments à une liste en utilisant la méthode append() ou insérer des éléments à une position spécifique avec la méthode insert() :

fruits.append("date")
print(fruits)

Sortie :

['apple', 'blueberry', 'cherry', 'date']
fruits.insert(1, "banana")
print(fruits)

Sortie :

['apple', 'banana', 'blueberry', 'cherry', 'date']

Pour supprimer des éléments, vous pouvez utiliser la méthode remove() ou l'instruction del :

fruits.remove("cherry")
print(fruits)

Sortie :

['apple', 'banana', 'blueberry', 'date']
del fruits[0]
print(fruits)

Sortie :

['banana', 'blueberry', 'date']

Les listes peuvent contenir des éléments de types différents, y compris d'autres listes :

mixed_list = [1, "hello", 3.14, [1, 2, 3]]
print(mixed_list)

Sortie :

[1, 'hello', 3.14, [1, 2, 3]]

Les listes sont extrêmement polyvalentes et largement utilisées en Python pour stocker des collections d'objets.

Comprendre les tuples

Dans cette étape, vous allez découvrir les tuples, qui sont des séquences ordonnées mais immuables en Python.

Dans l'interpréteur Python, créons un tuple :

coordinates = (3, 4)
print(coordinates)

Sortie :

(3, 4)

Les tuples sont créés à l'aide de parenthèses ().

Comme pour les listes, vous pouvez accéder aux éléments d'un tuple via leur index :

print(coordinates[0])

Sortie :

3
print(coordinates[1])

Sortie :

4

Cependant, contrairement aux listes, les tuples sont immuables. Cela signifie que vous ne pouvez pas modifier leur contenu après leur création :

coordinates[0] = 5  ## Cela générera une erreur

Sortie :

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Les tuples peuvent contenir des types de données variés :

person = ("Alice", 25, "Engineer")
name, age, occupation = person  ## Dépaquetage de tuple (unpacking)
print(f"{name} is {age} years old and works as an {occupation}.")

Sortie :

Alice is 25 years old and works as an Engineer.

Le dépaquetage de tuple est un moyen pratique d'assigner plusieurs variables simultanément.

Vous pouvez créer un tuple avec un seul élément, mais n'oubliez pas d'inclure une virgule finale :

single_item_tuple = (42,)
print(type(single_item_tuple))

Sortie :

<class 'tuple'>

Sans la virgule, Python interprétera l'expression comme une simple valeur entre parenthèses.

Les tuples sont souvent utilisés pour renvoyer plusieurs valeurs à partir d'une fonction :

def get_dimensions():
    return (1920, 1080)

width, height = get_dimensions()
print(f"Width: {width}, Height: {height}")

Sortie :

Width: 1920, Height: 1080

Les tuples sont particulièrement utiles lorsque vous souhaitez créer une collection d'éléments qui ne doit pas être modifiée par le programme.

Explorer les ensembles (Sets)

Dans cette étape, vous allez découvrir les ensembles, qui sont des collections non ordonnées d'éléments uniques en Python.

Créons un ensemble dans l'interpréteur Python :

fruits = {"apple", "banana", "cherry"}
print(fruits)

Sortie :

{'cherry', 'banana', 'apple'}

Les ensembles sont créés à l'aide d'accolades {} ou de la fonction set(). Notez que l'ordre des éléments peut varier lors de l'affichage d'un ensemble.

Les ensembles suppriment automatiquement les doublons :

numbers = {1, 2, 2, 3, 3, 4}
print(numbers)

Sortie :

{1, 2, 3, 4}

Vous pouvez ajouter des éléments à un ensemble avec la méthode add() :

fruits.add("date")
print(fruits)

Sortie :

{'cherry', 'banana', 'apple', 'date'}

Pour supprimer des éléments, utilisez la méthode remove() :

fruits.remove("banana")
print(fruits)

Sortie :

{'cherry', 'apple', 'date'}

Les ensembles supportent les opérations mathématiques classiques telles que l'union, l'intersection et la différence :

set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2))  ## Union

Sortie :

{1, 2, 3, 4, 5}
print(set1.intersection(set2))  ## Intersection

Sortie :

{3}
print(set1.difference(set2))  ## Différence

Sortie :

{1, 2}

Vous pouvez vérifier si un élément appartient à un ensemble avec le mot-clé in :

print("apple" in fruits)

Sortie :

True
print("banana" in fruits)

Sortie :

False

Les ensembles sont très utiles pour stocker des éléments uniques ou pour effectuer des calculs d'appartenance rapides.

Travailler avec les dictionnaires

Dans cette étape, vous allez apprendre à utiliser les dictionnaires, qui sont des collections non ordonnées de paires clé-valeur en Python.

Créons un dictionnaire dans l'interpréteur Python :

person = {"name": "Alice", "age": 25, "occupation": "Engineer"}
print(person)

Sortie :

{'name': 'Alice', 'age': 25, 'occupation': 'Engineer'}

Les dictionnaires sont créés avec des accolades {} contenant des paires clé-valeur séparées par des deux-points :.

Vous accédez aux valeurs d'un dictionnaire en utilisant leurs clés :

print(person["name"])

Sortie :

Alice
print(person["age"])

Sortie :

25

Les dictionnaires sont mutables, vous pouvez donc ajouter ou modifier des paires clé-valeur :

person["city"] = "New York"
person["age"] = 26
print(person)

Sortie :

{'name': 'Alice', 'age': 26, 'occupation': 'Engineer', 'city': 'New York'}

Pour supprimer une paire clé-valeur, utilisez l'instruction del :

del person["city"]
print(person)

Sortie :

{'name': 'Alice', 'age': 26, 'occupation': 'Engineer'}

Vous pouvez vérifier l'existence d'une clé avec le mot-clé in :

print("name" in person)

Sortie :

True
print("city" in person)

Sortie :

False

Les dictionnaires disposent de méthodes pratiques comme keys(), values() et items() :

print(person.keys())

Sortie :

dict_keys(['name', 'age', 'occupation'])
print(person.values())

Sortie :

dict_values(['Alice', 26, 'Engineer'])
print(person.items())

Sortie :

dict_items([('name', 'Alice'), ('age', 26), ('occupation', 'Engineer')])

Vous pouvez utiliser la compréhension de dictionnaire pour créer des dictionnaires de manière concise :

squares = {x: x**2 for x in range(5)}
print(squares)

Sortie :

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Les dictionnaires sont indispensables pour stocker et récupérer des données associées à des identifiants uniques.

Mise en pratique globale

Dans cette dernière étape, vous allez créer un programme qui utilise toutes les structures de données étudiées dans cet atelier.

Quittez l'interpréteur Python en tapant exit() ou en appuyant sur Ctrl+D.

Ouvrez le WebIDE dans l'environnement VM LabEx.

WebIDE interface screenshot

Créez un nouveau fichier nommé contact_manager.py dans le répertoire ~/project :

touch ~/project/contact_manager.py

Ouvrez ce fichier dans l'éditeur WebIDE et ajoutez le contenu suivant :

def add_contact(contacts, name, phone, email):
    contacts[name] = {"phone": phone, "email": email}
    print(f"Contact {name} added successfully.")

def remove_contact(contacts, name):
    if name in contacts:
        del contacts[name]
        print(f"Contact {name} removed successfully.")
    else:
        print(f"Contact {name} not found.")

def display_contacts(contacts):
    if contacts:
        print("\nContact List:")
        for name, info in contacts.items():
            print(f"Name: {name}, Phone: {info['phone']}, Email: {info['email']}")
    else:
        print("Contact list is empty.")

def main():
    contacts = {}
    favorite_contacts = set()

    while True:
        print("\nContact Manager")
        print("1. Add Contact")
        print("2. Remove Contact")
        print("3. Display Contacts")
        print("4. Add to Favorites")
        print("5. Display Favorites")
        print("6. Exit")

        choice = input("Enter your choice (1-6): ")

        if choice == "1":
            name = input("Enter name: ")
            phone = input("Enter phone number: ")
            email = input("Enter email: ")
            add_contact(contacts, name, phone, email)
        elif choice == "2":
            name = input("Enter name to remove: ")
            remove_contact(contacts, name)
        elif choice == "3":
            display_contacts(contacts)
        elif choice == "4":
            name = input("Enter name to add to favorites: ")
            if name in contacts:
                favorite_contacts.add(name)
                print(f"{name} added to favorites.")
            else:
                print(f"Contact {name} not found.")
        elif choice == "5":
            print("\nFavorite Contacts:")
            for name in favorite_contacts:
                print(name)
        elif choice == "6":
            print("Thank you for using Contact Manager. Goodbye!")
            break
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

Ce programme illustre l'utilisation des dictionnaires, des ensembles et des listes pour créer un système simple de gestion de contacts.

Enregistrez le fichier (la sauvegarde automatique est activée dans le WebIDE) et exécutez-le via la commande suivante dans le terminal :

python ~/project/contact_manager.py

Interagissez avec le programme en ajoutant des contacts, en les supprimant, en affichant la liste, en ajoutant des favoris et en consultant ces derniers. Voici un exemple d'interaction :

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 1
Enter name: Alice
Enter phone number: 123-456-7890
Enter email: alice@example.com
Contact Alice added successfully.

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 1
Enter name: Bob
Enter phone number: 987-654-3210
Enter email: bob@example.com
Contact Bob added successfully.

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 3

Contact List:
Name: Alice, Phone: 123-456-7890, Email: alice@example.com
Name: Bob, Phone: 987-654-3210, Email: bob@example.com

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 4
Enter name to add to favorites: Alice
Alice added to favorites.

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 5

Favorite Contacts:
Alice

Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 6
Thank you for using Contact Manager. Goodbye!

Ce programme démontre l'utilité concrète des dictionnaires (pour stocker les informations détaillées), des ensembles (pour gérer les favoris sans doublons) et des listes (utilisées implicitement dans le système de menu).

Résumé

Dans cet atelier, vous avez exploré les structures de données fondamentales de Python : les listes, les tuples, les ensembles et les dictionnaires. Vous avez appris à créer, manipuler et exploiter ces outils polyvalents, qui sont essentiels pour une gestion efficace des données en programmation Python.

Vous avez commencé par travailler avec les listes, en apprenant à créer, accéder et modifier des collections ordonnées. Vous avez ensuite découvert les tuples, en comprenant leur nature immuable et leurs cas d'utilisation pour représenter des collections de données fixes. Ensuite, vous avez exploré les ensembles, découvrant leur capacité à garantir l'unicité des éléments et à effectuer des opérations mathématiques. Enfin, vous avez manipulé les dictionnaires, apprenant à gérer des paires clé-valeur pour un stockage et une recherche de données performants.

Pour consolider ces concepts, vous avez développé un programme pratique de gestion de contacts intégrant plusieurs de ces structures. Ce projet a montré comment différentes structures de données peuvent collaborer au sein d'une application réelle, illustrant ainsi la puissance et la flexibilité de l'écosystème Python.

Ces structures de données constituent la colonne vertébrale de nombreux programmes Python, vous permettant d'organiser et de manipuler l'information avec efficacité. Au fil de votre progression, vous constaterez que ces outils sont indispensables pour résoudre une vaste gamme de problèmes de programmation. N'oubliez pas de vous exercer à les utiliser dans divers scénarios pour renforcer votre maîtrise du langage.