Tableaux

type list

Objectifs

  • Connaître l'interface d'un tableau,
  • Créer un tableau,
  • Accéder et modifier un élément,
  • Ajouter des éléments,
  • Parcourir les éléments d'un tableau,
  • Connaître les algorithmes de base sur les tableaux.

Définition

tableau

En informatique, un tableau est une structure de données représentant une séquence finie d'éléments auxquels on peut accéder efficacement par leur position, nommée indice, dans la séquence.

Interface

Interface et implémentation

Dans le domaine des structures de données, l’interface désigne l’ensemble des opérations qui sont possibles avec cette structure de donnée.
Elle se distingue de son implantation qui désigne la mise en oeuvre pratique dans un langage donné.

Interface


Quelles sont les opérations de l'interface d'un tableau ?

Interface



  • Créer un tableau vide ou non,
  • Mesurer un tableau,
  • Accéder à une valeur depuis son index,
  • Ajouter / supprimer un élément,
  • Parcourir les éléments.

Interface



  • Créer un tableau vide ou non,
  • Mesurer un tableau,
  • Accéder à une valeur depuis son index,
  • Ajouter / supprimer un élément,
  • Parcourir les éléments.

Interface



  • Créer un tableau vide ou non,
  • Mesurer un tableau,
  • Accéder à une valeur depuis son index,
  • Ajouter / supprimer un élément,
  • Parcourir les éléments.

Interface



  • Créer un tableau vide ou non,
  • Mesurer un tableau,
  • Accéder à une valeur depuis son index,
  • Ajouter / supprimer un élément,
  • Parcourir les éléments.

Interface



  • Créer un tableau vide ou non,
  • Mesurer un tableau,
  • Accéder à une valeur depuis son index,
  • Ajouter / supprimer un élément,
  • Parcourir les éléments.

Implémentation

tableau en python

Python implemente les tableaux dans le type list.
De ce fait, il y a une confusion entre les listes, telles qu'elles sont définies en informatique (nous verrons cette définition plus tard dans l'année) et le type list de Python.

Initialisation d'un tableau

En python, les tableaux sont contenus dans des crochets [ ... ]
Les éléments sont séparés par des virgules ,
[ élement1 , élement2 , élement3 ]

Tableau vide


Il est possible de créer un tableau vide

# Créer un tableau vide
mon_tableau = []

Tableau non vide


Il est aussi possible de l'initialiser avec des valeurs

# Créer un tableau à partir de valeurs
>>> mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
["Alan", "Ada", "Grace", "Ian"]

Tableau de valeurs identiques

Enfin si l'on veut, il est aussi possible de l'initialiser avec les mêmes valeurs

# Créer un tableau contenant 5 zéros
>>> mon_tableau = [0]*5
[0, 0 , 0, 0, 0]

Accéder à un élément

Pour accéder à un élément, on utilise son index (sa position dans la liste)

L'index d'une liste commence à 0.

[\underbrace{\text{"Alan"}}_{0}, \underbrace{\text{"Ada"}}_{1}, \underbrace{\text{"Grace"}}_{2}, \underbrace{\text{"Ian"}}_{3}]

Accéder à un élément

L'instruction pour accéder à un élément est construite à partir du nom du tableau et de l'index (la position) de l’élément souhaité entre crochets [].

Accéder à un élément

Le tableau s'appelle mon_tableau et l'élément Ada est en position 1.

On accède donc à cet élément avec l'instruction

>>> mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
>>> print(mon_tableau[1])
"Ada"

Les index négatifs



Comment accéder aux derniers éléments d'un tableau ?


Les index négatifs



Pour atteindre le dernier élément d'un tableau, il faudrait connaître le nombre total d'éléments du tableau (ne utilisant la fonction len) et lui soustraire 1.



notes = [12, 14, 11, 16, 17, 15, 18, 15, 19, 14, 17]
nb_notes = len(notes)
print(notes[nb_notes - 1])





notes = [12, 14, 11, 16, 17, 15, 18, 15, 19, 14, 17]
print( notes[len(notes) - 1])





notes = [12, 14, 11, 16, 17, 15, 18, 15, 19, 14, 17]
print( notes[-1])


Exercice 1

On considère le code suivant :

tab = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
Que vaut tab[3] ?

Exercice 2

Après l'affectation suivante :

alphabet = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N','O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ]
Quelle instruction permet d'accéder à la lettre E ?


Quelle instruction permet d'accéder à la lettre Y ?

Modification d'un élément

Modification

Pour modifier la valeur d'un élément, il faut acceder à cet élément par son index et lui affecter une nouvelle valeur à l'aide du signe =.

nom_tableau[index ] = nouvelle valeur

Exemple


Quel affichage résultera de l'éxécution du code ci-dessous ?

    informaticiens= ["Alan", "Ada", "Grace", "Ian"]
    informaticiens[1] = "Ada Lovelace"
    print(informaticiens)
    

Exemple


Quel affichage résultera de l'éxécution du code ci-dessous ?

    informaticiens = ["Alan", "Ada", "Grace", "Ian"]
    informaticiens[1] = "Ada Lovelace"
    print(informaticiens)
    ["Alan", "Ada Lovelace", "Grace", "Ian"]
    

Parcourir un tableau

Parcourir un tableau

Il existe deux manières de parcourir les éléments d'une liste :
  • Parcourir une liste à partir des index des éléments
  • Parcourir une liste par itération sur les éléments

Parcours à partir de l'index des éléments

En python, les tableaux (list) fonction taille len( ) donnant le nombre d'éléments contenus dans la liste.
Associer à la fonction range(), on obtient un itérable composé de tous les index des éléments de la liste.

Parcours à partir de l'index des éléments


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for index in range(len(mon_tableau)):
    print(mon_tableau[index])
Dans cet exemple, la longueur de mon_tableau est 6.
L'instruction range(len(mon_tableau)) va être successivement évaluée par range(6) puis par un itérable de longueur 6 qui contiendra les valeurs 0, 1, 2, 3, 4 et 5 qui seront succéssivement données à la variable index.

Itération des éléments

Comme pour tout les itérables, il est aussi possible de parcourir un tableau en itérant les éléments du tableau, avec les instructions

for v in iterable.

Exemple


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for elmt in mon_tableau:
    print(elmt)
Dans cet exemple, la variable elmt prendra successivement les valeurs contenues dans la variable mon_tableau, c'est à dire "Alan", "Ada", "Grace", "Ian".

remarque

Il est souvent utile de bien nommée la variable créée dans la boucle for. Ainsi pour le code précédent, il aurait été préférable d'écrire :


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for informaticien in mon_tableau:
    print(informaticien)

Exercice

On considère le code suivant :

def feed(t):
    for i in range(len(t)):
        t[i] = t[i] + i
    return t
    
Que renvoie l'instruction feed([12, 24, 32]) ?

Ajouter des éléments

Méthodes

Il existe plusieurs façons d'ajouter des éléments à un tableau donné.
On peut :

  • ajouter un élement,
  • étendre un tableau à partir d'un second tableaux,
  • concatener 2 tableaux pour en former un troisième.

Ajouter un élément


Pour ajouter un seul élément, on utilise la méthode append. La méthode append modifie sur place l'objet tableau qui l'appelle.

mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
mon_tableau.append("George")
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "George"]


Etendre une liste


Pour ajouter un tableau d'élément à un tableau existant, on utilise la méthode extend. La méthode extend modifie sur place l'objet tableau qui l'appelle.

mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
tableau_2 = ["Charles", "Guido"]
mon_tableau.extend(tableau_2)
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Ajout par concaténation


Il est aussi possible de concaténer 2 listes pour en créer une troisième à l'aide de l'instruction +.

tableau_1 = ["Alan", "Ada", "Grace", "Ian"]
tableau_2 = ["Charles", "Guido"]
mon_tableau = tableau_1 + tableau_2
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Exercices

Combien d'éléments contient le tableau tab1 après éxécution de ces instructions.

tab1 = [3,2,2]
tab2 = [1,5,1]
tab1.append(tab2)
print(tab1)


D'autres méthodes

Dans toute cette section, on considèrera la liste nombres.
Les instructions sont considérées être effectuées les une à la suites des autres.

nombres = [17, 38, 10, 25, 72]

Ordonner la liste

La méthode sort permet de classer les éléments de la suite

nombres = [17, 38, 10, 25, 72]
nombres.sort()
print(nombres)
# Affiche  [10, 17, 25, 38, 72]

Inverser les éléments d'un tableau


nombres = [17, 38, 10, 25, 72]
nombres.reverse()
print(nombres)
# Affiche  [72, 38, 25, 17, 10]

Supprimer des éléments

Pour supprimer la première occurence d'une valeur.

nombres.remove(38)
print(nombres)
# Affiche [72, 25, 17, 10]

Supprimer des éléments

Pour supprimer un élément à partir de sa position. On utilise la méthode pop()

# L'instruction pop enlève et renvoi le dernier élément de la liste
print(nombres.pop())
# Affiche 10
print(nombres)
# Affiche la liste [72, 25, 17 ]

Position d'un élément

On peut récupérer la position d'un élément à partir de sa valeur à l'aide de la méthode index()

liste = [72, 25, 17, 25 ]
print(nombres.index(17))
# Affiche  2

Information sur un élément

On peut récupérer la position d'un élément à partir de sa valeur à l'aide de la méthode index()

liste = [72, 25, 17, 25, 26]
compte le nombre d’occurrence d'un élément
print(liste.count(25))
# Affiche : 2

Algorithme

Fonction Nombre d'occurences


Fonction recherche
Fonction recherche2
Fonction recherche3
Fonction moyenne
Fonction moyenne2