Skip to content

TP9. Tableaux

Énoncé

On commence par rappeler la terminologie utilisée en BPI (TD 1 du chapitre 2) :

  • Tableau : structure de donnée de taille fixe avec uniquement des accès indexés (par exemple tab[k]) ;

  • Vecteur (== tableau dynamique) : un tableau dont la taille peut changer dynamiquement. Autrement dit, on peut y ajouter des éléments, les supprimer, etc. ;

  • Liste : type de donnée abstrait représentant un nombre fini d'éléments que l'on peut parcourir. A la différence des tableaux, une liste ne supporte pas, par défaut, d'accès indexés par construction ;

  • list (sans le e) : en python la structure de donnée tableau dynamique s'appelle list (sans le e final).

Les tableaux, selon la terminologie ci-dessus, n'existent pas en python !

Pour créer une list (donc un vecteur) en python il suffit d'utiliser des crochets :

>>> tab_dyn = [1, 2, 3]

Lancez l'interpréteur interactif, et faites des petits tests pour :

  • créer un vecteur ;
  • accéder à un élément à partir d'un index ;
  • ajouter un élément à la fin ;
  • ajouter un élément au début ;
  • supprimer un élément à la fin ;
  • supprimer un élément au début.

Pensez à utiliser la commande help fournie par l'interpréteur interactif. Par exemple help(list.append).

Enfin, interrogez-vous sur le coût, c'est-à-dire le nombre d'opérations élémentaires nécessaires à chacun de ces tests.

Difficulté

star star

Correction

Cliquez ici pour révéler la correction de l'exercice.

Corrigé du fichier tableaux.py

#!/usr/bin/env python3
"""Premiers tests avec des tableaux dynamiques python"""

# Une list (sans le E), c'est à dire un vecteur
tab_dyn = [1, "super", "vecteur", "python"]
print(tab_dyn)

# Un accès indexé, sachant que ça commence à zéro
elem = tab_dyn[2]
print(elem)

# Ajout à la fin
# Ça ne coûte pas cher, on colle juste le nouvel élement
tab_dyn.append(42)
print(tab_dyn)

# Ajout au début
# Ça coûte cher, faut bouger tout le monde vers la droite
tab_dyn.insert(0, "je me suis incrusté en tête du tableau")
print(tab_dyn)

# Supression à la fin
# Ça ne coute pas cher, on enlève juste le dernier élement
tab_dyn.pop()
print(tab_dyn)

# Supression au début
# Ça coûte cher, faut bouger tout le monde vers la gauche
tab_dyn.pop(0)
print(tab_dyn)