Aplatir un tableau⚓︎
On considère un tableau à deux dimensions (on dit aussi une matrice), non vide, rempli de nombres et l'on souhaite l'aplatir, c'est-à-dire le transformer en un tableau à une seule ligne.
Par exemple, le tableau de dimensions \(3 \times 4\) :
pourra être transformé en un nouveau tableau de dimensions \(1 \times 12\)
Les tableaux de départ seront représentés par des listes de listes Python. Ainsi le premier tableau ci-dessus sera représenté par :
tableau = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
Les tableaux "aplatis", sur une seule ligne, seront représentés par une simple liste Python. Le second tableau ci-dessus sera représenté par :
aplati = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
aplatir
prenant en argument une liste de listes tableau
et renvoyant une liste dans laquelle toutes les valeurs de tableau
sont données à la suite les unes des autres.
Exemples
>>> aplatir([[1, 2, 3, 4], [5, 6, 7, 8]])
[1, 2, 3, 4, 5, 6, 7, 8]
>>> aplatir([[1], [2], [3], [4], [5], [6]])
[1, 2, 3, 4, 5, 6]
def aplatir(tableau):bksl-nl ...bksl-nlbksl-nlbksl-nl# Testsbksl-nlassert aplatir([[1, 2, 3, 4], [5, 6, 7, 8]]) == [1, 2, 3, 4, 5, 6, 7, 8]bksl-nlassert aplatir([[1, 2, 3], [4, 5, 6]]) == [1, 2, 3, 4, 5, 6]bksl-nlassert aplatir([[1, 2], [3, 4], [5, 6]]) == [1, 2, 3, 4, 5, 6]bksl-nlassert aplatir([[1], [2], [3], [4], [5], [6]]) == [1, 2, 3, 4, 5, 6]bksl-nlbksl-nldef aplatir(tableau):bksl-nl resultat = []bksl-nl for ligne in tableau:bksl-nl for valeur in ligne:bksl-nl resultat.append(valeur)bksl-nl return resultatbksl-nlbksl-nlbksl-nl# Testsbksl-nlassert aplatir([[1, 2, 3, 4], [5, 6, 7, 8]]) == [1, 2, 3, 4, 5, 6, 7, 8]bksl-nlassert aplatir([[1, 2, 3], [4, 5, 6]]) == [1, 2, 3, 4, 5, 6]bksl-nlassert aplatir([[1, 2], [3, 4], [5, 6]]) == [1, 2, 3, 4, 5, 6]bksl-nlassert aplatir([[1], [2], [3], [4], [5], [6]]) == [1, 2, 3, 4, 5, 6]bksl-nlbksl-nl
A
Cet exercice demande de coder une fonction approchant la méthode flatten
du module numpy
.
Une solution⚓︎
Dans la fonction aplatir
on parcourt l'ensemble des lignes et des valeurs de tableau
en l'on ajoute les valeurs au fur et à mesure dans une liste resultat
.
Variante avec extend
⚓︎
def aplatir(tableau):
resultat = []
for ligne in tableau:
resultat.extend(ligne)
return resultat
Variante avec une double compréhension⚓︎
def aplatir(tableau):
return [element for ligne in matrice for element in ligne]
Z