Compréhensions et fonctions intégrées
Écrivez des solutions concises à l’aide des compréhensions de listes, de dictionnaires et d’ensembles, ainsi que de map, filter, zip, enumerate et sorted avec des fonctions clé.
Compréhensions et fonctions intégrées est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Coding Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Coding Interview Prep comprend 4 leçons au total.
Compréhensions de listes : filtrage concis
Une compréhension de liste transforme une boucle for suivie de append en une seule ligne claire : [expr for item in iterable if condition]. Elle est un peu plus rapide et témoigne d’une bonne maîtrise de Python.
# Traditional loop
squares = []
for n in range(1, 6):
squares.append(n * n)
print(squares) # [1, 4, 9, 16, 25]
# List comprehension
squares = [n * n for n in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
# With filter
evens = [n for n in range(10) if n % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]Compréhensions imbriquées pour les grilles 2D
Les compréhensions imbriquées construisent des grilles 2D, la méthode standard pour initialiser une table de programmation dynamique. Évitez [[0]*C]*R, qui partage la même liste interne entre toutes les lignes. Le code montre la correction.
# WRONG: all rows are the same object!
bad = [[0] * 3] * 3
bad[0][0] = 9
print(bad) # [[9,0,0],[9,0,0],[9,0,0]] oops!
# CORRECT: each row is a separate list
good = [[0] * 3 for _ in range(3)]
good[0][0] = 9
print(good) # [[9,0,0],[0,0,0],[0,0,0]]Compréhensions de dictionnaires et d’ensembles
Les compréhensions de dictionnaires et d’ensembles utilisent des accolades : {k: v for ...} pour un dictionnaire et {expr for ...} pour un ensemble. Toutes deux peuvent filtrer les éléments, ce qui permet de transformer ou de dédoublonner en une seule ligne.
# Dict comprehension: square lookup
sq_map = {n: n**2 for n in range(1, 6)}
print(sq_map) # {1:1, 2:4, 3:9, 4:16, 5:25}
# Set comprehension: unique lengths
words = ['cat', 'dog', 'elephant', 'ant']
unique_lengths = {len(w) for w in words}
print(unique_lengths) # {3, 8} (order varies)Expressions génératrices : économes en mémoire
Entourez une compréhension de () pour obtenir un générateur qui fournit les valeurs une par une et économise ainsi de la mémoire. Transmettez-le directement à sum, max ou à toute autre fonction pour parcourir d’immenses séquences.
# List comprehension builds all values at once
total = sum([n**2 for n in range(1_000_000)])
# Generator yields one at a time — lower memory
total = sum(n**2 for n in range(1_000_000))
print(total) # 333332833333500000
# any/all with generators short-circuit early
nums = [4, 6, 8, 3, 10]
has_odd = any(n % 2 == 1 for n in nums)
print(has_odd) # True (stops at 3)map() et filter() : style fonctionnel
map applique une fonction à chaque élément ; filter conserve ceux qui réussissent une vérification. Les deux fonctions sont paresseuses : entourez-les de list() pour voir les résultats. Les compréhensions sont souvent plus claires.
nums = [1, 2, 3, 4, 5]
# map: apply function to each element
doubled = list(map(lambda n: n * 2, nums))
print(doubled) # [2, 4, 6, 8, 10]
# filter: keep elements passing predicate
evens = list(filter(lambda n: n % 2 == 0, nums))
print(evens) # [2, 4]
# Equivalent comprehensions (often preferred)
doubled = [n * 2 for n in nums]
evens = [n for n in nums if n % 2 == 0]zip() : associer des séquences
zip associe deux séquences et s’arrête à la plus courte : c’est la manière claire de parcourir deux listes simultanément. L’astuce zip(*matrix) transpose une liste 2D. Consultez le code.
keys = ['a', 'b', 'c']
values = [1, 2, 3]
pairs = list(zip(keys, values))
print(pairs) # [('a',1), ('b',2), ('c',3)]
# Build dict from two lists
d = dict(zip(keys, values))
print(d) # {'a':1, 'b':2, 'c':3}
# Transpose a matrix
matrix = [[1,2,3],[4,5,6],[7,8,9]]
transposed = [list(row) for row in zip(*matrix)]
print(transposed) # [[1,4,7],[2,5,8],[3,6,9]]enumerate() : indice et valeur
enumerate fournit (index, value) pendant le parcours, ce qui est plus clair que range(len(lst)) et évite les erreurs de décalage d’une unité. Utilisez l’option start pour commencer le comptage à 1.
fruits = ['apple', 'banana', 'cherry']
# Instead of: for i in range(len(fruits)):
for i, fruit in enumerate(fruits):
print(i, fruit)
# 0 apple / 1 banana / 2 cherry
# Start from 1
for i, fruit in enumerate(fruits, 1):
print(f'{i}. {fruit}')
# 1. apple / 2. banana / 3. cherrysorted() avec des fonctions key
sorted renvoie une nouvelle liste triée et accepte une fonction key pour définir un ordre personnalisé. Triez par longueur, selon un champ de tuple ou sans tenir compte de la casse. Le code montre des tris à plusieurs clés.
# Sort by second element of tuple
intervals = [(1,3),(2,1),(0,5)]
print(sorted(intervals, key=lambda x: x[1]))
# [(2,1),(1,3),(0,5)]
# Sort strings case-insensitively
words = ['Banana', 'apple', 'Cherry']
print(sorted(words, key=str.lower))
# ['apple', 'Banana', 'Cherry']
# Sort by multiple keys: first by length, then alphabetically
words = ['fig', 'apple', 'ant', 'kiwi']
print(sorted(words, key=lambda w: (len(w), w)))
# ['ant', 'fig', 'kiwi', 'apple']min() et max() avec key
min et max acceptent également key : vous pouvez donc récupérer en un seul appel l’élément correspondant à la plus petite ou à la plus grande valeur calculée, comme le mot le plus long. Consultez le code.
words = ['banana', 'fig', 'strawberry', 'kiwi']
longest = max(words, key=len)
print(longest) # strawberry
shortest = min(words, key=len)
print(shortest) # fig
# Find interval with earliest end
intervals = [(2,6),(1,3),(4,5)]
earlist_end = min(intervals, key=lambda x: x[1])
print(earlist_end) # (1, 3)any() et all() pour des vérifications avec arrêt anticipé
any s’arrête au premier élément évalué comme vrai ; all s’arrête au premier élément évalué comme faux. Toutes deux utilisent un arrêt anticipé : associées à un générateur, elles vérifient donc les conditions rapidement et de manière paresseuse.
nums = [2, 4, 6, 7, 8]
all_even = all(n % 2 == 0 for n in nums)
print(all_even) # False (7 is odd)
has_large = any(n > 5 for n in nums)
print(has_large) # True (6 qualifies, stops there)
# Practical: check if sudoku row has no duplicates
row = [1, 2, 3, 4, 5, 6, 7, 8, 9]
valid = all(1 <= n <= 9 for n in row) and len(set(row)) == 9
print(valid) # Truesum(), abs() et divmod()
Trois outils mathématiques apparaissent partout : sum, abs et divmod. divmod(a, b) renvoie simultanément le quotient et le reste, ce qui est parfait pour extraire des chiffres.
# sum with generator
print(sum(n**2 for n in range(1, 6))) # 55
# abs for distance problems
print(abs(-7)) # 7
# divmod for digit extraction
num = 1234
digits = []
while num:
num, d = divmod(num, 10)
digits.append(d)
digits.reverse()
print(digits) # [1, 2, 3, 4]Vérification rapide
Vérification rapide : voyons comment vous avez assimilé les compréhensions et les fonctions intégrées. Une question, et vous y arriverez. ✅
Récapitulatif de la leçon
Récapitulatif : les compréhensions transforment les boucles en instructions uniques, les fonctions intégrées comme zip et sorted acceptent des fonctions key, et les générateurs économisent la mémoire pour les traitements en un seul passage.
Questions Fréquemment Posées
La leçon « Compréhensions et fonctions intégrées » est-elle gratuite ?
Oui — le texte complet de « Compréhensions et fonctions intégrées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Coding Interview Prep, passe à CoddyKit PRO. Le cours Coding Interview Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Compréhensions et fonctions intégrées » ?
Écrivez des solutions concises à l’aide des compréhensions de listes, de dictionnaires et d’ensembles, ainsi que de map, filter, zip, enumerate et sorted avec des fonctions clé. Tu pratiques Coding Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Coding Interview Prep ?
Aucune expérience préalable n'est requise. Coding Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Compréhensions et fonctions intégrées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Coding Interview Prep ?
Oui. Chaque leçon Coding Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Listes, tuples et tranches
- Dictionnaires et ensembles en Python
- Compréhensions et fonctions intégrées
- Fonctions, fermetures et lambda