tuple et liste, usage en python

Il est possible de "stocker" plusieurs grandeurs dans une même structure, ce type de structure est appelé une séquence. Nous allons voir les tuples et revoir l'utilisation des tableaux.

Les tuples en Python

Comme déjà dit ci-dessus, un tuple est une séquence.A la différence des tableaux ou liste, un tuple n'est pas mutable, c'est à dire qu'il n'est pas modifiable. Voici un exemple très simple :


mon_tuple = (5, 8, 6, 9)
		

Dans le code ci-dessus, la variable "mon_tuple" référence un tuple, ce tuple est constitué des entiers 5, 8, 6 et 9. Comme indiqué dans la définition, chaque élément du tuple est indicé (comme pour les tableaux vu dans l'activité précédente.):

  • le premier élément du tuple (l'entier 5) possède l'indice 0
  • le deuxième élément du tuple (l'entier 8) possède l'indice 1
  • .....
  • Comment accéder à l'élément d'indice i dans un tuple ?

    Simplement en utilisant la "notation entre crochets" :

    Testez le code suivant :

    
    mon_tuple = (5, 8, 6, 9)
    a = mon_tuple[2]
    		

    Quelle est la valeur référencée par la variable a (utilisez la console pour répondre à cette question)?

    La variable mon_tuple référence le tuple (5, 8, 6, 9), la variable a référence l'entier 6 car cet entier 6 est bien le troisième élément du tuple, il possède donc l'indice 2


    Un tuple ne contient pas forcément des nombres entiers, il peut aussi contenir des nombres décimaux, des chaînes de caractères, des booléens...

    Quel est le résultat attendu après l'exécution de ce programme ?

    Vérifiez votre hypothèse en testant ce programme

    
    mon_tuple = ("le", "monde", "bonjour")
    print(mon_tuple[2] + " " + mon_tuple[0] + " " + mon_tuple[1] + "!")
    		

    Grâce au tuple, une fonction peut renvoyer plusieurs valeurs :

    Analysez puis testez le code suivant :

    
    def add(a, b):
    	c = a + b
    	return (a, b, c)
    mon_tuple = add(5, 8)
    print( mon_tuple[0] + mon_tuple[1] + mon_tuple[2])
    		

    Il faut bien comprendre dans l'exemple ci-dessus que la variable mon_tuple référence un tuple (puisque la fonction "add" renvoie un tuple), d'où la "notation entre crochets" utilisée avec mon_tuple (mon_tuple[1]...)


    La console permet d'afficher les éléments présents dans un tuple simplement en :

    Il est possible d'assigner à des variables les valeurs contenues dans un tuple :

    
    a, b, c, d = (5, 8, 6, 9)
    		

    Quelle est la valeur référencée par la variable a ? La variable b ? La variable c ? La variable d ? Vérifiez votre réponse à l'aide de la console Python.

    Les tableaux partie 2

    Rappels : En général, en programmation , nous parlons de tableaux mais dans le langage Python, ils sont appelés list. A la différence des tuples, les tableaux ou list:-) sont mutables (nous pouvons les modifier).

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

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

    
    mon_tab = [5, 8, 6, 9]
    mon_tab[2] = 15
    		

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


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

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

    
    mon_tab = [5, 8, 6, 9]
    mon_tab.append(15)
    		

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

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

    
    mon_tab = [5, 8, 6, 9]
    del mon_tab[1]
    		

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

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

    
    mon_tab = [5, 8, 6, 9]
    nb_ele = len(mon_tab)
    		

    Une petite parenthèse : on pourrait s'interroger sur l'intérêt d'utiliser un tuple puisque le tableau permet plus de choses ! La réponse est simple : 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.

    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) :

    Analysez puis testez le code suivant :

    
    mon_tab = [5, 8, 6, 9]
    for element in mon_tab:
    	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 mon_tab auront été parcourus.

    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].

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

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

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

    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 :

    
    mon_tab = [5, 8, 6, 9]
    		

    ou encore à l'aide de la méthode "append".

    Il est aussi possible d'obtenir exactement le même résultat en une seule ligne grâce à la compréhension de tableau :

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

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

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

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

    
    l = [1, 7, 9, 15, 5, 20, 10, 8]
    mon_tab = [p for p in l if p > 10]
    		

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

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

    
    l = [1, 7, 9, 15, 5, 20, 10, 8]
    mon_tab = [p**2 for p in l if p < 10]
    		

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

    Comme vous pouvez le remarquer, nous obtenons un tableau (mon_tab) qui contient tous les éléments du tableau l élevés au carré à condition que ces éléments de l soient inférieurs à 10. Comme vous pouvez le constater, la compréhension de tableau permet d'obtenir des combinaisons relativement complexes.


    Travailler sur des "tableaux de tableaux"

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

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

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

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

    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.


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

    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)
            
        

    Mettre en application

    voici un tableau décrivant le titre du film, l'année de sortie et la note:

    mes_films=[["la ligne verte",2000,4.6],["Joker",2019,4.1],["Vol au-dessus d'un nid de coucou",1976,4.7],["Pulp fiction",1994,4.8],["Gran Torino",2009,4.4],["Alita",2019,3.6]]
  • 1- Ecrire un script permettant d'afficher les films ayant une note supérieure à 4
  • 2- Ecrire un sript recherchant les films sortis en 2019
  • 3- Ecrire une fonction recherchant le plus vieux film
  • 4- Créer une fonction permettant d'ajouter des films à mon tableau mes_films puis ajouter vos films préférés

  • Si vous avez tout fait, vous pouvez vous lancer sur le projet filé ici