Exercices Structures de données Comprehension imbriquée
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Comprehension imbriquée

Les comprehensions peuvent être imbriquées, c'est-à-dire contenir plusieurs boucles for. L'ordre de lecture est le même que si tu écrivais les boucles normalement.

Par exemple, pour créer toutes les paires possibles :
[(x, y) for x in [1, 2] for y in ['a', 'b']]
donne [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

C'est équivalent à :
résultat = []
for x in [1, 2]:
for y in ['a', 'b']:
résultat.append((x, y))

Tu peux aussi aplatir une liste de listes :
matrice = [[1, 2], [3, 4], [5, 6]]
[x for ligne in matrice for x in ligne] donne [1, 2, 3, 4, 5, 6]

Écris une fonction aplatir(matrice) qui prend une liste de listes et renvoie une seule liste contenant tous les éléments.

Exemple :
aplatir([[1, 2], [3, 4], [5, 6]]) renvoie [1, 2, 3, 4, 5, 6]
aplatir([['a', 'b'], ['c']]) renvoie ['a', 'b', 'c']

Tests (4/5)

Matrice numérique
assert aplatir([[1, 2], [3, 4], [5, 6]]) == [1, 2, 3, 4, 5, 6]
Strings
assert aplatir([['a', 'b'], ['c']]) == ['a', 'b', 'c']
Matrice vide
assert aplatir([]) == []
Sous-listes vides
assert aplatir([[], [1], []]) == [1]

+ 0 tests cachés

Indices (3 disponibles)

solution.py