TD J1 : listes python 1D, 2D, slices¶

Exercice 1 (création de liste par compréhension)¶

Q1 Définir par compréhension une copie de la liste mots dont tous les éléments on été mis en majuscule (pour info, si ch est une variable de type chaine de caractères, alors ch.upper() renvoie une copie de cette chaine en majuscule).

In [ ]:
mots = ['sinus', 'cosinus', 'tangente', 'exponentielle', 'logarithme']

mots_maj =  # à comléter 

print(mots_maj)

Q2 Définir par compréhension une liste composée des multiples de 3 compris entre 0 et 100 (essayer d'envisager plusieurs solutions)

In [ ]:
# à compléter

Exercice 2 (Utilisation des slices en 1D)¶

Q3. Créer de trois manières différentes la liste des nombres impairs compris entre 10 et 50 :

  • La première avec une compréhension de liste.
  • La deuxième, en créant d'abord la liste des entiers entre 10 et 50, puis en extrayant les nombres impairs de celle-ci par slicing.
  • La troisième avec une boucle classique.
In [ ]:
# méthode 1 : avec une compréhension de liste
In [ ]:
# méthode 2 : avec un slice
In [ ]:
# méthode 3 : avec une boucle classique

Exercice 3 ( quelques méthodes applicables sur une liste)¶

On va voir dans cet exercice les méthodes append, remove, index, reverse et sort que l'on peut appliquer à une liste. Il en existe d'autres, on pourra consulter Internet...

Q4. À partir de la liste mots ci-dessous, saisir dans la cellule suivante, les instructions ci-dessous dans l'ordre et afficher après chaque étape ce que devient la liste...

mots = ['sinus', 'cosinus', 'tangente', 'exponentielle', 'logarithme']

mots.append('inverse') # ajoute un élément
mots.remove('cosinus') # on enlève un élément connu
mots.index('tangente') # récupère l'index d'un élément connu
mots.reverse() # renverse l'ordre des éléments
mots.sort() # tri les éléments dans l'ordre alphabetique
m = mots.pop(2) # enlève et renvoie l'élément d'index donné
del mots[-1] # supprime l'élément d'index donné
del mots[1:] # même chose avec un slice
In [ ]:
mots = ['sinus', 'cosinus', 'tangente', 'exponentielle', 'logarithme']

mots.append('inverse')
print("après append mots devient :", mots)

mots.remove('cosinus') # on enlève un élément connu
print("après remove mots devient :", mots)

# à compléter...

Q5. Que contient la liste mot après toutes les étapes ?

Réponse : ... à compléter

Exercice 4 (manipuler des listes 2D)¶

On considère la liste 2D suivante :

In [ ]:
mat = [   [1,2,3],
          [4,5,6],
          [7,8,9]
      ]

Q6. Comment faire pour accéder à la ligne 3 de la matrice mat par exemple ?

In [ ]:
 

Q7. Même question avec la colonne 3. Est-ce aussi facile ?

In [ ]:
 

Q8. Puisque une liste 2D est simplement une liste de liste, on peut utiliser les créations par compréhension.

En imbriquant 2 for écrire une instruction python pour créer par compréhension la matrice 5x5 dont l'élément ligne i, colonne j vaut i*j.

In [ ]:
list_m = # à compléter 

print(list_m)

Q9. Écrire en une seule ligne une commande python qui calcule la somme $\displaystyle \sum_{i=1}^{5}\sum_{j=1}^{5} i\times j$.

In [ ]:
 

Conclusion : cette façon de stocker les tableaux à double entrée n'est pas très souple. La manipulation des lignes et des colonnes n'est pas toujours très aisées. Le module numpy spécialisé dans la manipulation des tableaux va pallier à ce manque.