Leçon 3/6 8 min

Listes et dictionnaires

Organisez vos données : listes, slicing, list comprehensions, dictionnaires et tuples.

Les listes

Une liste est une collection ordonnée de valeurs. On la crée avec des crochets [] :

fruits = ["pomme", "banane", "cerise"]

print(fruits[0])    # pomme (le premier)
print(fruits[-1])   # cerise (le dernier)
print(len(fruits))  # 3 (la taille)

fruits.append("kiwi")  # ajoute à la fin
fruits.pop()            # retire le dernier
fruits.remove("banane") # retire par valeur

Résultat après les opérations :

print(fruits)  # ['pomme', 'cerise']

Attention : les indices commencent à 0, pas à 1. fruits[1] est le deuxième élément.

Le slicing — découper une liste

Le slicing extrait une portion de liste avec la syntaxe [début:fin] :

nombres = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(nombres[2:5])   # [2, 3, 4]     (index 2, 3, 4)
print(nombres[:3])    # [0, 1, 2]     (du début à 3)
print(nombres[7:])    # [7, 8, 9]     (de 7 à la fin)
print(nombres[::2])   # [0, 2, 4, 6, 8]  (un sur deux)
print(nombres[::-1])  # [9, 8, 7, ..., 0] (inversé)

La règle : le début est inclus, la fin est exclue. C'est logique une fois qu'on s'y habitue.

List comprehensions — le superpouvoir de Python

Les list comprehensions créent des listes en une seule ligne :

# Doubler chaque nombre
doubles = [x * 2 for x in range(5)]
print(doubles)  # [0, 2, 4, 6, 8]

# Filtrer les nombres pairs
pairs = [x for x in range(10) if x % 2 == 0]
print(pairs)    # [0, 2, 4, 6, 8]

# Mettre en majuscules
noms = ["alice", "bob", "charlie"]
majuscules = [nom.upper() for nom in noms]
print(majuscules)  # ['ALICE', 'BOB', 'CHARLIE']

La syntaxe : [expression for élément in iterable if condition]. C'est l'une des raisons pour lesquelles les développeurs adorent Python.

Les dictionnaires

Un dictionnaire associe des clés à des valeurs. On le crée avec des accolades {} :

utilisateur = {
    "nom": "Alice",
    "age": 25,
    "ville": "Paris"
}

print(utilisateur["nom"])     # Alice
print(utilisateur.get("age")) # 25

# Ajouter / modifier
utilisateur["email"] = "alice@mail.com"
utilisateur["age"] = 26

# Parcourir
for cle, valeur in utilisateur.items():
    print(f"{cle}: {valeur}")

Résultat :

nom: Alice
age: 26
ville: Paris
email: alice@mail.com

Les tuples — des listes immuables

Un tuple est comme une liste, mais on ne peut pas le modifier après création :

coordonnees = (48.8566, 2.3522)  # Paris
print(coordonnees[0])  # 48.8566
# coordonnees[0] = 0   # ERREUR ! Un tuple est immuable

# Utile pour les valeurs qui ne doivent pas changer
jours = ("lundi", "mardi", "mercredi", "jeudi", "vendredi")
couleurs_rgb = (255, 128, 0)

Utilisez un tuple quand les données sont fixes (coordonnées, jours de la semaine, constantes).

Lists

A list is an ordered collection of values. Create one with square brackets []:

fruits = ["apple", "banana", "cherry"]

print(fruits[0])    # apple (the first)
print(fruits[-1])   # cherry (the last)
print(len(fruits))  # 3 (the length)

fruits.append("kiwi")    # add to the end
fruits.pop()              # remove the last
fruits.remove("banana")   # remove by value

Result after operations:

print(fruits)  # ['apple', 'cherry']

Warning: indices start at 0, not 1. fruits[1] is the second element.

Slicing — cutting a list

Slicing extracts a portion of a list with the syntax [start:end]:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[2:5])   # [2, 3, 4]     (index 2, 3, 4)
print(numbers[:3])    # [0, 1, 2]     (from start to 3)
print(numbers[7:])    # [7, 8, 9]     (from 7 to end)
print(numbers[::2])   # [0, 2, 4, 6, 8]  (every other)
print(numbers[::-1])  # [9, 8, 7, ..., 0] (reversed)

The rule: start is included, end is excluded. It makes sense once you get used to it.

List comprehensions — Python's superpower

List comprehensions create lists in a single line:

# Double each number
doubles = [x * 2 for x in range(5)]
print(doubles)  # [0, 2, 4, 6, 8]

# Filter even numbers
evens = [x for x in range(10) if x % 2 == 0]
print(evens)    # [0, 2, 4, 6, 8]

# Uppercase names
names = ["alice", "bob", "charlie"]
upper_names = [name.upper() for name in names]
print(upper_names)  # ['ALICE', 'BOB', 'CHARLIE']

The syntax: [expression for element in iterable if condition]. This is one of the reasons developers love Python.

Dictionaries

A dictionary maps keys to values. Create one with curly braces {}:

user = {
    "name": "Alice",
    "age": 25,
    "city": "Paris"
}

print(user["name"])      # Alice
print(user.get("age"))   # 25

# Add / modify
user["email"] = "alice@mail.com"
user["age"] = 26

# Iterate
for key, value in user.items():
    print(f"{key}: {value}")

Result:

name: Alice
age: 26
city: Paris
email: alice@mail.com

Tuples — immutable lists

A tuple is like a list, but you can't modify it after creation:

coordinates = (48.8566, 2.3522)  # Paris
print(coordinates[0])  # 48.8566
# coordinates[0] = 0   # ERROR! A tuple is immutable

# Useful for values that should not change
days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
rgb_color = (255, 128, 0)

Use a tuple when data is fixed (coordinates, days of the week, constants).

Avec l'IA

Copiez ce prompt dans Claude ou ChatGPT :

Écris un script Python qui crée un dictionnaire de contacts (nom, téléphone, email) et permet d'ajouter, rechercher et supprimer des contacts. Utilise une list comprehension pour filtrer les contacts.
Que renvoie fruits[-1] si fruits = ["pomme", "banane", "cerise"] ?
Que produit [x * 2 for x in range(4)] ?
Comment accéder à la valeur "Paris" dans user = {"nom": "Alice", "ville": "Paris"} ?
Quelle est la différence entre une liste et un tuple ?
Besoin d'un développeur pour votre projet ?

Réponse sous 24h — Sans engagement