NSI Première

LISTES de LISTES

Dans la séance précédente sur les Listes, vous avez découvert cette notion et vu quelques propriétes.
Nous allons voir aujourd’hui d’autre concept sur les Listes.

I. Réactiver les savoirs

Voici quelques petits exercices simple pour réactiver vos connaissances.

Ci-dessous, on donne la liste ex_liste:

In [ ]:
ex_liste = [2,3,7,5,11]
  1. Quel est le contenu de la liste "ex_liste" après l'exécution du programme ci-dessous ?
In [ ]:
ex_liste[3] = 8
  1. Quel est le contenu de la liste "ex_liste" après l'exécution du programme ci-dessous ?
In [ ]:
ex_liste.append(15)
  1. Quel est le contenu de la liste "ex_liste" après l'exécution du programme ci-dessous ?
In [ ]:
del ex_liste[1]
  1. Que donne l'exécution du programme ci-dessous ?
In [ ]:
for element in ex_liste:
    print(element)
  1. Comparer les deux programmes ci-dessous ?
In [ ]:
liste_1 = []
for element in range(0, 5):
    liste_1.append(element)
In [ ]:
liste_2 = [p for p in range(0, 5)]

II. Tri dans une liste

On a déjà vu des méthodes appliquées à des listes. On va s’intéresser à deux méthodes :

liste.sort() : La liste est triée dans l'ordre croissant

liste.reverse() : La liste est inversée

1. Voici quelques exemples

   1.a) Tri sur une liste
In [1]:
nombres = [3,17, 38, -10, 25, 72,-15,8,53]
nombres.sort()
nombres
Out[1]:
[-15, -10, 3, 8, 17, 25, 38, 53, 72]
In [2]:
couleurs = ['rouge', 'vert','orange','bleu', 'jaune','violet','marron']
couleurs.sort()
couleurs
Out[2]:
['bleu', 'jaune', 'marron', 'orange', 'rouge', 'vert', 'violet']
In [3]:
melange = ['rouge',17,8,'orange','violet']
melange.sort()
melange
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-12860a6f4454> in <module>
      1 melange = ['rouge',17,8,'orange','violet']
----> 2 melange.sort()
      3 melange

TypeError: '<' not supported between instances of 'int' and 'str'

Que se passe-t-il pour la liste melange ?

1.b) Inversion sur une liste
In [4]:
nombres.reverse()
nombres
Out[4]:
[72, 53, 38, 25, 17, 8, 3, -10, -15]
In [5]:
couleurs.reverse()
couleurs
Out[5]:
['violet', 'vert', 'rouge', 'orange', 'marron', 'jaune', 'bleu']
In [6]:
melange.reverse()
melange
Out[6]:
['violet', 'orange', 8, 17, 'rouge']

2. Exercices

    2.1 Ecrire une fonction « genere(n) » qui crée une liste de n nombres entiers générés au hasard entre 1 et 10. 
        Tester votre fontions pour les valeurs de n suivantes : 6 , 10 et 15.
In [ ]:
from random import randint

def genere(n):
    ...

2.2 Ecrire une fonction « aleaTri(n) » qui recopie la liste précédente, crée aléatoirement, dans une autre liste, en supprimant les doublons. La liste finale doit être triée dans l’ordre croissant. Tester votre fontions pour les valeurs de n suivantes : 6 , 10 et 15.

In [ ]:
def aleaTri (n):
    ...

II. Liste de listes

Dans une liste, chaque élément peut être aussi aune liste.
On parle alors de « Liste de listes ».

1. Exemples

    1.1 Afficher le premier et le troisème élément de la liste « matrice » ci-dessous.
        Vérifier que ces éléments sont bien des listes.
In [ ]:
matrice = [[2,7,4], [6,10,9], [3,2,5], [11,9,14]]
    1.2 On donne la liste « multicouleurs » ci-dessous.
        Quel est l'élément multicouleurs[2].
In [ ]:
multicouleurs = [['rouge', 'vert'],['orange','bleu'],['jaune','violet']]

2. Affichage

2.1 Méthode 

Il est souvent plus pratique d’afficher une "Listes de listes" sous la forme d’un « tableau » ou matrice (objet 
mathématique).

On va pouvoir utiliser des indices de position avec ces "Listes de listes".      
Pour cela, nous allons utiliser les notions de "ligne" et de "colonne" définies dans une matrice ou un tableau.

Exemple :
In [ ]:
matrice = [[2,7,4],
           [6,10,9],
           [3,2,5],
           [11,9,14]]

Pour repérer un élément dans cette matrice, on va utiliser la notation :

Matrice[ligne][colonne]

Remarque
Attention l’indice de la première ligne et de la première colonne commence à 0.

2.2 Exercices

    a) Quelle sont les valeurs référencées par les variables "a", "b" et "c" après l'exécution du programme ci-dessous ?
In [ ]:
a = matrice[1][2]
b = matrice[3][0]
c = matrice[2][3]

Correction : a = 9 ; b = 11 et pour c: erreur-(matrice[2][3] , n'est pas un élément de matrice)

b) Expliquez ce que fait le programme suivant : Ensuite vérifier votre réponse en l'exécutant.

In [ ]:
nb_colonne = 3
nb_ligne = 4
for ln in range(0, nb_ligne):
    for cn in range(0, nb_colonne):
        a = matrice[ln][cn]
        print(a)
  c) Ecrire une fonction (procédure) « affiche(matrice,ligne,colonne) » ayant pour paramètres une matrice, 
    son nombre de lignes et son nombre de colonnes et qui affiche la matrice sous la forme dans tableau.
    Ensuite exécuter votre fonction pour "matrice"
In [ ]:
def affiche_tab(matrice,ligne,colonne):
    ...

3. Création de tableaux

On a vu que l’on peut utiliser les listes pour créer des tableaux. Les tableaux servent à stocker des données dans un programme, ils ont l’avantage d’être modifiables et de changer de dimensions selon les besoins du programme. Nous allons définir une fonction qui vont créer des tableaux.

Par la suite, dans une prochaine séance, on va apprendre à remplir des tableaux à partir de listes de données et faire dun tri dans ces tableaux.

1. création de tableaux simples.

Ecrire une fonction crea_tab(ligne,colonne) ayant pour paramètres le nombre de lignes et le nombre de colonnes et qui va créer un tableau composé uniquement de zéros. Tester pour : nb_ligne = 5 ; nb_colonne = 3

In [ ]:
def crea_tab(ligne,colonne):
    ...

2. Exercice

On donne la liste valeurs=[2,3,5,7,11,13]. On veut afficher dans un tableau, les n premiers multiples des nombres de la table "valeurs". L'affichage doit être sous cette forme :

2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
.
.
13 26 39 52 65 78 91 104 117 130

Ecrire une fonction « multiple(liste,ligne,collone) » ayant pour paramètres une liste, le nomnbre de lignes et le nombre de colonnes et qui affiche le tableau.

In [ ]:
def multiple (liste,ligne,colonne):
    ...
    

    def main():
    
    Liste=[2,3,5,7,11,13]
    nb_ligne=len(Liste)
    nb_colonne=10
    multiple (Liste,nb_ligne,nb_colonne)
    
main()