<jupyter_start><jupyter_text>TableauxUn tableau est une structure en **deux dimensions**, avec des lignes et colonnes.  En Python, un tableau est **une liste de listes**. ![](img/cff-general.jpg)La photo montre le tableau des départs de trains, prises le matin à la gare de Renens. Le tableau affiche 12 trains qui vont partir prochainement.   Un horaire de trainUn horaire CFF est un tableau. Chaque ligne de ce tableau représente un train. Chaque train a les caractéristiques suivantes :* type* heure de départ* gare de destination* voieTous les trains de la journée ne peuvent pas tous être affichés en même temps.En informatique, on parle d'un **tableau 2D** ou tableau à deux dimensions. Chaque **colonne** représente les caractéristiques d'un train (type, heure de départ, destination, etc..) et chaque ligne représente un train.  Création d'une listeUne liste est un ensemble d'objets. En Python une liste- est délimitée par des crochets `[]`, et- ses éléments sont séparés par une virgule `,`Chaque `train` est une liste qui possède autant d'éléments qu'il y a de caractéristiques dans l'horaire, séparées par une virgule `,`<jupyter_code>train1 = ['S22', '8h47', 'Vufflens-la-Ville', 1]
train2 = ['S2', '8h51', 'Aigle', 4]
train3 =  ['S4', '8h55', 'Palézieux', 3]<jupyter_output><empty_output><jupyter_text>**Exercice**  Définissez la liste `train4` selon l'horaire dans l'image ci-dessus.  Création d'un tableau 2DEn Python, il n'existe pas de structure de donnée de type tableau. On le construit avec des listes. Un tableau 2D est **une liste de liste**. L'horaire devient une liste de listes.<jupyter_code>horaire = [train1, train2, train3]
horaire<jupyter_output><empty_output><jupyter_text>**Exercice**   Ajoutez `train4` à l'horaire.  Accès aux élémentsOn peut accéder une ligne du tableau par son **indice**.  Un indice est un nombre entier entre crochets `[]`. En Python, les indices commencent avec 0.  L'indice `[0]` désigne donc la première ligne et l'indice `[1]` désigne la deuxième ligne.La deuxième ligne du tableau 2D `horaire` est `horaire[1]`, et c'est aussi une liste<jupyter_code>horaire[1]<jupyter_output><empty_output><jupyter_text>On accède de même aux éléments de la ligne `horaire[1]`L'élément `horaire[1][2]` correspond au troisième élément de la liste `horaire[1]`, donc la destination<jupyter_code>horaire[1][2]<jupyter_output><empty_output><jupyter_text>**Exercice**  Accédez à l'heure du départ du troisième train dans le tableau.  Accéder à une plageOn peut accéder à une plage d'éléments. La plage entre le premier et le deuxième élément s'écrit `horaire[0:2]`<jupyter_code>horaire[0:2]<jupyter_output><empty_output><jupyter_text>Avec une boucle `for` nous pouvons itérer sur la liste et afficher les trains ligne par ligne.<jupyter_code>for train in horaire[0:2]:
    print(train)<jupyter_output>['S22', '8h47', 'Vufflens-la-Ville', 1]
['S2', '8h51', 'Aigle', 4]<jupyter_text>**Exercice**  Affichez les lignes 3-4 de l'horaire.  Longueur d'un tableauLa fonction `len(list)` retourne la longueur d'une liste<jupyter_code>len(horaire)<jupyter_output><empty_output><jupyter_text>La longueur de l'une ligne du tableau 2D est retourné avec:<jupyter_code>len(horaire[0])<jupyter_output><empty_output><jupyter_text>Ajouter un élémentOn peut ajouter une nouvelle ligne à la fin avec la fonction `list.append()` :<jupyter_code>train5 =  ['RE', '8h58', 'Annemasse', 2]
horaire.append(train5)
horaire<jupyter_output><empty_output><jupyter_text>On peut ajouter une nouvelle ligne à la position `i` avec la fonction `list.insert(i, element)`<jupyter_code>train6 =  ['S1', '8h57', 'Lausanne', 4]
horaire.insert(3, train6)
horaire<jupyter_output><empty_output><jupyter_text>Enlever des élémentsOn peut enlever des éléments avec les méthodes suivantes : * `list.remove(x)` si l'élément `x` existe* `list.pop()` le dernier élément* `list.clear()` tous les élémentsOn enlève l'élément `train5` :<jupyter_code>horaire.remove(train5)
horaire<jupyter_output><empty_output><jupyter_text>On peut enlever le dernier élément avec la méthode `list.pop()`<jupyter_code>horaire.pop()
horaire<jupyter_output><empty_output><jupyter_text>On efface tous les éléments avec la méthode `list.clear()`. La variable `horaire` est maintenant une liste vide.<jupyter_code>horaire.clear()
horaire<jupyter_output><empty_output><jupyter_text>ExerciceVoici votre horaire de départ.<jupyter_code>horaire = [train1, train2, train3, train6, train5]
horaire<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10798750557786703, 'fraction_numerical': 0.018518518518518517, 'mean_word_length': 6.624149659863946, 'pattern_counts': {'":': 0, '<': 56, '<?xml version=': 0, '>': 56, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '14', 'dir': 'jupyter-structured-clean-dedup', 'id': '119435', 'license': 'BSD-2-Clause', 'n_tokens_mistral': 1658, 'n_tokens_neox': 1665, 'n_words': 502, 'path': '1M/prog/tableaux/Tableaux.ipynb', 'repo_name': 'vkeller/modulo-gybe', 'size': '4482'}