Wallon
licence

Numérique et Sciences Informatiques


TP
TP


Les tableaux

1 ) les tableaux en général

ATTENTION : Les tableaux étant des listes de listes, il est préférable, pour éviter toute confusion, de choisir le terme "tableau". Ces "tableaux", les concepteurs de Python ont choisi de les appeler avec le terme "list" ("liste" en français). (dans la documentation vous rencontrerez le terme "list", cela ne devra pas vous pertuber)

Nous avons vu qu'il n'est pas possible de modifier un tuple après sa création (on parle d'objet "immutable"), si vous essayez de modifier un tuple existant, l'interpréteur Python vous renverra une erreur. Les tableaux sont,comme les tuples, des séquences, mais à la différence des tuples, ils sont modifiables (on parle d'objets "mutables").

Pour créer un tableau, il existe différentes méthodes : une de ces méthodes ressemble beaucoup à la création d'un tuple :


		tableau = [15, 3, 9, 23, 11]
		

Notez la présence des crochets à la place des parenthèses.


Un tableau est une séquence, il est donc possible de "récupérer" un élément d'un tableau à l'aide de son indice (de la même manière que pour un tuple)

exemple 1

Quelle est la valeur référencée par la variable variable1 après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [15, 3, 9, 23, 11]
		variable1 = tableau[2]
		print(variable1)
		

N.B. Il est possible de saisir directement tableau[2] dans la console sans passer par l'intermédiaire de la variable variable1


Il est possible de modifier un tableau à l'aide de la "notation entre crochets" :

exemple 2

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [15, 3, 9, 23, 11]
		tableau[3] = 56
		print(tableau)
		

Comme vous pouvez le constater avec l'exemple ci-dessus, l'élément d'indice 3 (le nombre entier 23) a bien été remplacé par le nombre entier 56


Il est aussi possible d'ajouter un élément en fin de tableau à l'aide de la méthode "append" :

exemple 3

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [15, 3, 9, 23, 11]
		tableau.append(56)
		print(tableau)
		

L'instruction "del" permet de supprimer un élément d'un tableau en utilisant son index :

exemple 4

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [15, 3, 9, 23, 11]
		del tableau[1]
		print(tableau)
		

La fonction "len" permet de connaitre le nombre d’éléments présents dans une séquence (tableau et tuple)

exemple 5

Quelle est la valeur référencée par la variable nb_ele après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [15, 3, 9, 23, 11]
		nb_ele = len(tableau)
		print(nb_ele)
		

Une petite remarque : Pourquoi utiliser un tuple puisque le tableau permet plus de choses ! Simplement parce que les opérations sur les tuples sont plus "rapides". Quand vous savez que votre tableau ne sera pas modifié, il est préférable d'utiliser un tuple à la place d'un tableau.

2 ) la boucle "for" : parcourir les éléments d'un tableau

La boucle for... in... permet de parcourir chacun des éléments d’une séquence (tableau ou tuple) :

exemple 6

Analysez puis testez le code suivant :


		tableau = [15, 3, 9, 23, 11]
		for element in tableau:
			print(element)
		

Quelques explications : comme son nom l'indique, la boucle "for" est une boucle ! Nous "sortirons" de la boucle une fois que tous les éléments du tableau "tableau" auront été parcourus. element est une variable qui va :

Une chose importante à bien comprendre : le choix du nom de la variable qui va référencer les éléments du tableau les uns après les autres (element) est totalement arbitraire, il est possible de choisir un autre nom sans aucun problème, le code suivant aurait donné exactement le même résultat :


		tableau = [15, 3, 9, 23, 11]
		for toto in mon_tab:
			print (toto)
		

Dans la boucle for... in... il est possible d’utiliser la fonction prédéfinie range à la place d’un tableau d’entiers :

exemple 7

Analysez puis testez le code suivant :


		for element in range(0, 5):
			print (element)
		

Comme vous pouvez le constater, "range(0,5)" est, au niveau de la boucle "for..in", équivalent au tableau [0,1,2,3,4], le code ci-dessous donnerait le même résultat que le programme vu dans le "exemple 6" :


		tableau = [15, 3, 9, 23, 11]
		for element in tableau:
			print (element)
		

ATTENTION : si vous avez dans un programme "range(a,b)", a est la borne inférieure et b la borne supérieure. Vous ne devez surtout pas perdre de vue que la borne inférieure est incluse, mais que la borne supérieure est exclue.


Il est possible d'utiliser la méthode "range" pour "remplir" un tableau :

exemple 8

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = []
		for element in range(0, 5):
			tableau.append(element)
		print(tableau)	
		

3 ) Créer un tableau par compréhension

Nous avons vu qu'il était possible de "remplir" un tableau en renseignant les éléments du tableau les uns après les autres :


		tableau = [15, 3, 9, 23, 11]
		

ou encore à l'aide de la méthode "append" (voir ci dessus).


Il est aussi possible d'obtenir exactement le même résultat en une seule ligne grâce à la compréhension de tableau : Construire un tableau ou une liste par compréhension signifie simplifier le code pour le rendre plus lisible et plus rapide. On utilise alors la syntaxe (complète) suivante :
tableau (ou liste) = [ for in if ]

exemple 9

Quel est le contenu du tableau référencée par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		tableau = [p for p in range(0, 5)]
		print(tableau)
		

Les compréhensions de tableaux permettent de rajouter une condition (if) :

exemple 10

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		l = [1, 7, 9, 15, 3, 5, 20, 10, 14, 8, 56]
		tableau = [p for p in l if p > 10]
		print(tableau)
		

autre possibilité, utiliser des composants "arithmétiques" :

exemple 11

Quel est le contenu du tableau référencé par la variable tableau après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		l = [1, 7, 9, 15, 3, 5, 20, 10, 14, 8, 56]
		tableau = [p**2 for p in l if p < 10]
		print(tableau)
		

Rappel : p**2 permet d’obtenir la valeur de p élevée au carrée

Nous obtenons un tableau (tableau) qui contient tous les éléments du tableau l élevés au carré à condition que ces éléments de l soient inférieurs à 10. La compréhension de tableau permet d'obtenir des combinaisons relativement complexes.


exemple 12

On considère la liste ci dessous, à partir de laquelle on veut en créer une autre ne gardant que les valeurs strictement supérieures à 5 ? (utilisez thonny pour vérifier votre réponse)


		liste = [1, 4, 2, 7, 1, 9, 0, 3, 4, 6, 6, 8, 3]
		
Le code suivant fonctionne, mais ne constitue pas un programme créant une liste par compréhension: nouvelle_liste = [] for i in liste: if i > 5: nouvelle_liste.append(i) print(nouvelle_liste)
construire la liste par compréhension pour cet exemple.

Définition

Construire une liste par compréhension signifie simplifier le code pour le rendre plus lisible et plus rapide. on utilise la syntaxe suivante :

liste = ["fonction sur un item" for "item" in "liste" if "condition" ] :
ici "fonction sur un item" sera représentée par i, c'est à dire la fonction utilisé est celle qui prend pour valeur celle de l'item.
"condition" pour cet exemple, c'est i > 5 : on ne garde que les valeurs qui valident la condition.

Le résultat attendu est : nouvelle_liste =[i for i in liste if i > 5]

4 )Travailler sur des "tableaux de tableaux"

Chaque élément d'un tableau peut être un tableau, on parle de tableau de tableau.

Voici un exemple de tableau de tableau :


		m = [[1, 3, 4], [5 ,6 ,8], [2, 1, 3], [7, 8, 15]]
		

Le premier élément du tableau ci-dessus est bien un tableau ([1, 3, 4]), le deuxième élément est aussi un tableau ([5, 6, 8])...

Il est souvent plus pratique de présenter ces "tableaux de tableaux" comme suit :


		m = 	[[1, 3, 4],
			[5, 6, 8],
			[2, 1, 3],
			[7, 8, 15]]
		

Nous obtenons ainsi quelque chose qui ressemble beaucoup à un "objet mathématique" très utilisé : une matrice
Une matrice est un tableau contenant des nombres. Une matrice est entourée de parenthèses en mathématiques et de crochets quand il s'agit d'un tableau.

Il est évidemment possible d'utiliser les indices de position avec ces "tableaux de tableaux". Pour cela nous allons considérer notre tableau de tableaux comme une matrice, c'est à dire en utilisant les notions de "ligne" et de "colonne". Dans la matrice ci-dessus :

En ce qui concerne les lignes :

En ce qui concerne les colonnes :

Pour cibler un élément particulier de la matrice, on utilise la notation avec "doubles crochets" : m[ligne][colonne] (sans perdre de vue que la première ligne et la première colonne ont pour indice 0)

On peut écrire un système linéaire sous forme d'une matrice de 2 lignes et 3 colonnes :
python           python           python           python          




Variables x y constantes
ligne 1 2 -5 3
ligne 2 7 4 -1


Pour représenter un système donc une matrice, on écrit une liste de listes


		matrice = [[2,-5,3],[7,4,-1]]
		print(matrice)
		

exemple 13

Quelle est la valeur référencée par la variable a après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		m = 	[[1, 3, 4],
			[5, 6, 8],
			[2, 1, 3],
			[7, 8, 15]]
		a = m[1][2]
		print(a)
		

Comme vous pouvez le constater, la variable a référence bien l'entier situé à la 2e ligne (indice 1) et à la 3e colonne (indice 2), c'est-à-dire 8. Attention de ne pas oublier le 0 !!


exemple 14

Quel est le contenu du tableau référencé par la variable mm après l'exécution du programme ci-dessous ? (utilisez thonny pour vérifier votre réponse)


		m = [1, 2, 3]
		ma = [m, m, m]
		m[0] = 100
		print (ma)
		

Comme vous pouvez le constater, la modification du tableau référencé par la variable m entraine la modification du tableau référencé par la variable mm (alors que nous n'avons pas directement modifié le tableau référencé par mm). Il faut donc être très prudent lors de ce genre de manipulation afin d'éviter des modifications non désirées.


Il est possible de parcourir l'ensemble des éléments d'une matrice à l'aide d'une "double boucle for" :

exemple 15

Analysez puis testez le code suivant :


		m = 	[[1, 3, 4],
			[5, 6, 8],
			[2, 1, 3],
			[7, 8, 15]]
		nb_colonne = 3
		nb_ligne = 4
		for i in range(0, nb_ligne):
			for j in range(0, nb_colonne):
				a = m[i][j]
				print(a)
		







TP
TP