Accueil » Leçon 5 - Les listes

Leçon 5 - Les listes

Objectifs de la leçon :

L'objectif de la leçon est de maîtriser la notion de liste.

Les listes sont des structures ordonnées de données placées les unes à la suite des autres.

Voici une liste de 4 données en Python :

L = [ 12 , "riri" , 15.3 , "Fifi"]
Comme vous le constatez, ces données sont de natures différentes. Il y a un entier, un float et deux chaines de caractères.

L'objet de cette leçon est de savoir:

  • construire des listes,
  • accéder à leurs éléments,
  • les modifier,
  • ... tout ça pour faciliter l'écriture de nos programmes. (En général, l'utilisation des listes évite la création de multiples variables).

Pré-requis :

La leçon 1 : afficher, saisir, les variables, les calculs.

La leçon 2 : les structures conditionnelles.

La leçon 3 : les fonctions.

La leçon 4 : les boucles.


 

Des exemples pour démarrer

Ma liste de courses :

Exemple : Ma liste de courses

  • Les éléments d'une liste sont donnés entre crochets.
  • Ils sont séparés par des virgules.



On peut ajouter un élément avec append :

Exemple : Ma liste de courses
J'ai oublié les biscuits !



On peut supprimer un élément avec remove :

Exemple : Ma liste de courses
J'arrête le pain !



Utiliser une boucle pour accéder aux éléments d'une liste :

Exemple : Affichage des éléments d'une liste avec une boucle for
Une liste est un objet itérable. Elle peut donc être parcourue via un "itérateur" qui est appelé ici item.



Utiliser des index pour accéder aux éléments d'une liste :

Quand on crée une liste, les éléments sont automatiques numérotés à partir de 0 :

Exemple : Numérotation des éléments
Cette liste possède 4 éléments numérotés (automatiquement) de 0 à 3.

 



Index trop élevé ?

Exemple : Numérotation des éléments
Plantage ! Il aurait fallu un 5ème élément ;-)...



Les index négatifs permettent de partir de la fin.

Exemple : Partir de la fin
  • L[-1] est le dernier élément ;
  • L[-2] est l'avant dernier ;
  • etc....

L'ESSENTIEL AVEC DES EXEMPLES DE BASE

Les listes sont des collections de données.

Créer, modifier, afficher une liste :

Exemple : Créer une liste, l'afficher, ajouter ou supprimer des éléments

  • L = [ liste des valeurs séparées par des virgules ] pour créer une liste
  • print (L) pour afficher la liste
  • L.append(valeur à ajouter) pour ajouter une valeur
  • L.remove(valeur à supprimer) pour supprimer une valeur (ne supprime que la première s'il y a des doublons)




Accéder aux éléments via des index :

Numérotation automatique :

Les listes s'apparentent à des tableaux unidimensionnels. Les éléments d'une liste sont automatiquement numérotés à partir de 0. On accède à l'élément d'index n via l'expression L[n]

Exemple : Accéder aux éléments via des index

Dans une liste à 4 éléments, ceux-ci sont numérotés de 0 à 3.



Les index négatifs permettent de partir de la fin.

Exemple : Partir de la fin
En utilisant des index négatifs, on part de la fin.
  • L[-1] est le dernier élément ;
  • L[-2] est l'avant dernier ;
  • etc....



Découpage avec les :

En utilisant les : , on peut copier des parties d'une liste.

  • L [n:p] retourne la liste des éléments numérotés de n à p - 1.
  • L [:p] retourne la liste des éléments numérotés de 0 à p - 1 (tous les éléments jusqu'au (p-1) nième.)
  • L [p:] retourne la liste de tous les éléments à partir du p ième.

Exemple : Copier des parties d'une liste

L'utilisation des : permet d'accéder à une partie d'une liste et de créer une copie de la sous-liste correspondante.

Attention ! On n'accède pas directement à la sous liste de départ mais à une copie :
Exemple : Quand on supprime un élément à la copie ....

On a enlevé 30 à la copie mais il est resté dans l'original !



Les fonctions de recherche
 :

le mot-clé in permet de savoir si un élément est dans une liste.

Exemple : Savoir si un élément est dans une liste

L'utilisation du mot clé in permet de tester l'appartenance d'un élément à une liste.


Connaître la position d'un élément avec la fonction index.

Exemple : Savoir à quelle place se trouve un élément dans une liste

L.index(A) retourne la place de l'élément A dans la liste.

S'il l'élément A est plusieurs fois dans la liste, c'est l'index du premier qui est retourné.
Exemple : index et doublons, seul le premier index est renvoyé

L1.index(20) retourne la place du premier 20 dans la liste L1.

Si l'élément A n'est pas dans la liste, le système génère une erreur.
Exemple : index d'un élément inexistant, erreur

L1.index(35) retourne une erreur car 35 n'est pas dans L1.



Parcourir une liste via une boucle for
 :

Les listes sont des structures de données itérables, donc on peut parcourir leurs éléments un par un avec une boucle for.

Calcul de la somme des éléments d'une liste :

Exemple : Calcul de la somme des éléments d'une liste

Pour cumuler les éléments de la liste L1, on initialise une variable somme à 0 puis on vient lui ajouter un par un tous les éléments de L1.


Calcul de la moyenne des éléments d'une liste :

Exemple : Calcul de la moyenne des éléments d'une liste

Pour calculer la moyenne des éléments de la liste L1, on calcule leur somme puis on divise par le nombre d'éléments de L1.
Le nombre d'éléments d'une liste (ou sa longueur, ou sa taille) est retourné via la fonction len.
L1 = [ 10 , 20 , 30 , 10 , 20 , 60 , 100 ]
len (L1) vaut 7

Quelques exemples plus poussés

Exemple : Moyenne des éléments d'une liste aléatoire

Ce code calcule la moyenne d'une liste de nombres aléatoires. Il utilise deux fonctions :
La fonction remplitListe crée aléatoirement une liste de N valeurs comprises entre deux valeurs vMin et vMax :
  • N est généré aléatoirement entre 2 et 20.
  • vMin et vMax sont générées aléatoirement entre 0 et 1000.

Puis l'autre fonction moyenneListe calcule la moyenne de la liste et le programme principal l'affiche.

Exemple : Présence d'un élément dans une liste aléatoire

Ce code vérifie qu'un nombre appartient ou pas à une liste de nombres aléatoires.
La fonction remplitListe crée aléatoirement une liste de N valeurs comprises entre deux variables globales VMIN et VMAX :
  • N est généré aléatoirement entre 2 et 20.
  • VMIN et VMAX sont générées aléatoirement entre 0 et 30.

Le programme principal génère un nombre aléatoire entre VMIN et VMAX et teste son appartenance à la liste.
Faites tourner plusieurs fois le programme pour avoir les deux cas de figure (présence ou absence de l'élément).

Exemple : Supprimer les doublons d'une liste

Ce code fournit 3 fonctions qui suppriment les doublons d'une liste :
  • La première crée une liste auxiliaire dans laquelle on vient ajouter les éléments de la première si on ne les a pas déjà ajoutés. Inconvénient : on est obligé de retourner la liste auxiliaire
  • La seconde vérifie qu'un élément de la liste n'est pas dans la sous-liste qui le suit. Si il y est, on le supprime. Mais comme remove supprime à partir du début, la liste finale est désordonnée.
  • La troisième parcourt la sous-liste qui suit un élément. On supprime alors avec pop les doublons. A mon avis, c'est la plus élégante, mais ça se discute... ;-)


Exemple : Tester le générateur de nombres aléatoires

Ce code est destiné à vérifier la fiabilité du générateur de nombres aléatoires de Python.
On va créer des listes aléatoires de nombres entiers entre 0 et 9. Ces listes seront de plus en plus grandes :10, 100, 1000, 10000, 100000 éléments.
Pour chaque liste, on calculera la fréquence d'apparition de chaque chiffre et on l'affichera. Si le générateur est correct, cette fréquence doit s'approcher de 0.1 quand le nombre d'éléments de la liste grandit.
Remarque : dans le code, ne vous laissez pas impressionner par :
" "*(6-len(str(len(liste))))
C'est juste pour aligner à droites les puissances de 10

Exemple : Séparer une liste en 4

Ce code est destiné à séparer une liste en 4 autres listes, une ne contenant que les entiers de L, la deuxième les nombres à virgule, la troisième les chaînes de caractères et la quatrième les listes.
A retenir : la fonction isinstance permet de tester le type d'une variable.

Des pièges à éviter

L=[ ] ne vide pas une liste existante mais crée un nouvel objet :

Exemple : Bon vidage et mauvais vidage !

 
L = [ ] ne vide pas la liste L si elle a déjà été créée mais crée un nouvel objet liste, vide.
Pour vider une liste existante, utilisez del (L [:] )
 



L[N:P] ne permet pas d'accéder à une sous liste de L mais crée une nouvelle liste allant du N ième au P-1 ème.

Exemple : Mauvais insert !

 
L[1:4].insert(1,30) ne modifie pas la liste L elle-même.
L[1:4] est une nouvelle liste égale à [21,22,23] mais pas la sous-liste de L composée de ces éléments.
 



Attention aux effets de bord ! Effet d'un remove dans une boucle for...

Exemple : Mauvais remove....

Ce programme est censé supprimer de la liste des Simpson tous les membres dont le nom contient la voyelle "a".
Mais si vous lancez le programme, vous vous apercevez que Bart n'a pas été supprimé, pourquoi ?

Il semble que la boucle "for in in Liste" de Python ne parcoure pas tous les items de la liste un par un, quoi qu'il arrive, mais crée un compteur (invisible) qui parcourt les éléments de la liste via leur index et qui s'incrémente de un en un.
Appelons C le compteur invisible.
Quand C valait 1, on pointait sur i = "Marge". On a donc supprimé i puisque "Marge" contient "a".
Puis C a pris la valeur 2, donc on pointe sur "Lisa" et pas sur "Bart" puisque "Marge" a été supprimée. C'est ce qui ne supprime pas Bart !

Bon à savoir

Dans cette partie, vous verrez successivement comment :

  • Insérer un élément dans une liste avec la fonction insert,
  • Étendre une liste avec la fonction extend
  • Supprimer et récupérer le dernier élément avec la fonction pop
  • Trier une liste avec la fonction sort,
  • Trouver le minimum et le maximum d'une liste avec les fonctions min et max,
  • Inverser les éléments d'une liste avec reverse,
  • Concaténer 2 listes avec +.

Exemple : Insérer un élément dans une liste avec la fonction insert

On avait oublié mercredi ! Avec insert, on a pu l'insérer entre mardi et jeudi (alors qu'append l'aurait ajouté à la fin).



Exemple : Étendre une liste avec la fonction extend

On avait oublié le weekend ! extend permet de compléter une liste avec une autre liste.



Exemple : Supprimer et récupérer le dernier élément avec la fonction pop

On supprime le dimanche ! pop permet de supprimer le dernier élément d'une liste et de le récupérer.



Exemple : Trier une liste avec la fonction sort

On trie la liste des jours par ordre alphabétique.

Trier une liste peut s'avérer compliqué lorsque ses éléments sont de natures différentes.
Pour en savoir plus, vous pouvez aller voir ici.




Exemple : Trouver le minimum et le maximum d'une liste avec les fonctions min et max

Les fonctions min et max retournent le minimum et le maximum d'une liste.



Exemple : Inverser les éléments d'une liste avec reverse

reverse inverse les éléments d'une liste.



Exemple : Concaténer 2 listes avec +

L1 + L2 crée une liste contenant les éléments de L1, suivis de ceux de L2.
Mais cette opération ne modifie ni L1, ni L2, à la différence de append ou extend.

les tuples

https://fr.wikibooks.org/wiki/Programmation_Python/Type_de_donn%C3%A9es_complexe#Les_tuples

Le quizz

Exercice à réponse courte : Liste et index
L = [ 10 , 20 , 30 , 40 , 50 , 60 ]
print (L[1])
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à choix multiple : Liste et index
L = [ 10 , 20 , 30 , 40 , 50 , 60 ]
print (L[2],L[-1])
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à choix multiple : Partie de liste
L = [ 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 ]
print (L[3:7])
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à choix multiple : Insert
L = [ 10 , 20 , 30 , 40 , 50 , 60 ]
L.insert(2,15)
print (L[1:4])
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à réponse courte : Append
L = [ 10 , 20 , 30 , 40 ]
L.append([50 , 60])
print (len(L))
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à réponse courte : Extend
L = [ 10 , 20 , 30 , 40 ]
L.extend([50 , 60])
print (len(L))
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à réponse courte : Trier
Quel est le nom de la fonction qui trie une liste ?
Bien !

Exercice à réponse courte : Liste dans liste ?
Une liste peut contenir une liste. Répondez vrai ou faux.
Bien !

Exercice à choix multiple : Concaténation
def concat(liste,sep) :
  retour=""
  for i in range(0,len(liste)-1) :
     retour = retour + str(liste[i]) + str(sep)
  retour = retour + str(liste[len(liste)-1])
  return retour

L=["Toto","Tutu","Riri","Fifi","Loulou"]
print (concat(L,"@"))
Qu'est-ce qu'affiche ce code ?
Bien !

Exercice à choix multiple : Filtrage
def filtre(liste):
L=[]
for i in liste:
if i % 2 == 0 :
L.append(i)
del(liste[:])
for i in L :
liste.append(i)
Que fait cette fonction ?
Bien !

Questions souvent posées


Est-ce qu'une liste peut contenir une autre liste ?

Exemple : Une liste peut contenir d'autres listes

Tout à fait :



Pourquoi on utilise parfois le . (comme L.append("toto")) et parfois non (comme len(L)) ?

Python est à la fois un langage procédural et un langage orienté objet.

  • Du côté procédural, on rencontre des appels de fonctions standards comme len(L)
  • Côté objet, comme dans tous les langages objets (java, C#...), l'appel d'une fonction doit être préfixé par un objet via l'opérateur . (comme L.append("toto"))



Comment fait-on pour supprimer tous les éléments d'une liste ? J'ai essayé le code suivant mais visiblement, ça ne marche pas !

Exemple : ça ne vide pas !!!!

On voit bien avec le deuxième print que la liste n'est pas vidée.... :

L'instruction L = [ ] ne vide pas la liste passée en paramètre de ta fonction mais crée un nouvel objet. Il faut utiliser la fonction del :

Exemple : ça vide !!!!

Là, on voit bien avec le deuxième print que la liste a été vidée.... :



Est-ce qu'on peut créer une liste vide ?

Oui :

L = []


Je ne comprends pas bien la différence entre append et extend ?

Exemple : J'ai rajouté le WE

La différence n'est visible que si l'élément rajouté est lui-même une liste.
Quand on ajoute une liste L1 à une autre liste L2 :
  • append ajoute la liste L2 comme nouvel élément de la liste L1. C'est à dire que la liste L1 a un élément de plus.
  • extend ajoute tous les éléments de la liste L2 comme nouveaux éléments de la liste L1.




Est-ce qu'un objet range est une liste ?

Non, mais on peut construire une liste à partir d'un objet range :

Exemple : Une liste à partir d'un objet range

Quand l'objet range(5,17,2) est parcouru, on part de 5 et on va de 2 en 2 jusqu'au dernier nombre possible avant 17. Mais ce parcours est dynamique. La liste des éléments 5, 7, 9, 11, 13, 15 n'est pas sauvegardée en mémoire.
En créant une liste à partir de cet objet range, la liste est sauvegardée en mémoire.



Je veux supprimer un élément d'une liste qui apparaît plusieurs fois. Comment faire ? remove ne supprime que le premier.

Exemple : Supprimer toutes les occurrences d'un élément dans une liste

Il faut supprimer ton élément de la liste tant qu'il existe encore dans la liste.
Dans l'exemple suivant, on supprime tous les 3 de la liste L.



Des fois on voudrait supprimer un élément dans une liste mais sans savoir réellement si il est dans la liste. C'est juste une précaution.

Mais s'il n'y est pas, le programme va tomber en erreur. Comment faire ?

Exemple : Supprimer toutes les occurrences d'un élément dans une liste

Il faut juste s'assurer qu'il est bien dans la liste en utilisant in.



Comment faire pour ajouter un élément dans la liste mais pas à la fin ?

Utiliser la fonction insert. Vous la trouverez dans la rubrique "Bon à savoir".



Pourquoi dans vos exemples vous écrivez souvent str(L), comme si vous cherchiez à transformer une liste en une chaine de caractères ?

Exemple : Pourquoi utiliser str(L) ?

C'est juste pour pouvoir afficher une liste à l'intérieur d'une chaine de caractères avec print. On peut :
  • séparer les paramètres de print par des virgules. Dans ce cas, L suffit, pas besoin de str(L).
  • concaténer avec des +. Dans ce cas str(L) est obligatoire.

Mais bon, c'est juste une affaire de goût....

Exemples de questions de cours

  • Quels types d'éléments une liste peut-elle contenir ? Détaillez votre réponse.
  • Une liste peut-elle contenir une autre liste ?
  • Quelle est la différence entre append et extend ?
  • On peut créer des parties de liste en utilisant les : (deux points). Décrire le plus complètement possible la syntaxe utilisée.
  • Peut-on parcourir une liste sans faire référence aux index de ses éléments ?
  • Quelle(s) difficulté(s) peut-on rencontrer quand on trie une liste ?

Des exercices pour s'entraîner

Exercice de code : Afficher le deuxième index

Ecrire un programme qui attend une liste L et une valeur A et qui affiche l'index de la deuxième valeur A dans la liste.
Par exemple, si L = [13 , 15 , 12 , 17 , 15 , 18 , 15 , 17 ] et que A = 15, le programme affiche 4 (le deuxième 15 se trouve à l'index 4). Si l'élément A n'st pas inclus deux fois dans la liste, le programme affiche -1.
On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste,
  • la valeur cherchée


Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Effectifs cumulés d'une liste

Ecrire un programme qui attend une liste L et qui affiche les effectifs cumulés des différents éléments de la liste sous forme de bâtons constitués d'étoiles. Par exemple, si L = [13 , 15 , 12 , 17 , 15 , 18 , 15 , 17 , 13 , 12 , 15 ] , le programme affiche :
**12
**13
****15
**17
*18
On affichera les éléments de la liste dans l'ordre croissant
On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste.


Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Concaténer 2 listes en alternant les éléments

Ecrire un programme qui attend deux listes L1 (d'entiers) et L2 (de chaines de caractères) puis les fusionne en alternant leurs éléments.
Par exemple, si L1 = [13, 15, 12, 17, 15 ] et L2 = ["Fifi", "Riri", "Loulou"] alors le programme crée la liste
L3 = [13, "Fifi", 15, "Riri", 12, "Loulou", 17, 15] et l'affiche.
Comme vous le constatez, si une liste est plus longue que l'autre, la liste résultante termine par les éléments excédentaires de la liste la plus longue.
On entrera successivement :
  • le nombre de valeurs de la liste L1,
  • les valeurs de la liste L1, elles seront entières,
  • le nombre de valeurs de la liste L2,
  • les valeurs de la liste L2, elles seront de type string.

Puis le programme affichera la liste L3 sous la forme habituelle (on attend juste l'instruction print(L3))

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Concaténer 2 listes sans doublon

Ecrire un programme qui attend deux listes d'entiers L1 et L2 et qui les concatène sans doublon.
Par exemple, si L1 = [13, 15, 12, 17, 15 ] et L2 = [18, 15, 14, 13, 19, 20] alors le programme crée la liste
L3 = [13, 15, 12, 17, 18, 14, 19, 20] et l'affiche.
On entrera successivement :
  • le nombre de valeurs de la liste L1,
  • les valeurs de la liste L1,
  • le nombre de valeurs de la liste L2,
  • les valeurs de la liste L2.

Puis le programme affichera la liste L3 sous la forme habituelle (on attend juste l'instruction print(L3))

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Moyenne corrigée

Ecrire un programme qui attend une liste d'entiers et qui calcule sa moyenne corrigée.
La moyenne corrigée est la moyenne de la liste dans laquelle on a supprimé le min et le max de la liste.
On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste.

Puis le programme affichera la moyenne corrigée de la liste

Si le min ou la max de la liste apparaissent plusieurs fois dans la liste, ils sont tous supprimés.
Exemple : si L = [15, 12, 13, 20, 14, 12, 20, 18, 17, 12], le programme calculera la moyenne de la liste [15, 13, 14, 18, 17]. On a supprimé tous les 12 (min) et tous les 20 (max).

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Moyenne pondérée

Ecrire un programme qui attend deux listes Val et Coeff puis qui calcule la moyenne des valeurs de la liste Val pondérées par les coefficients de la liste coeff.
Exemple : si Val = [12.5, 13.6, 18.4, 9.7] et Coeff = [2, 3, 5, 4], la moyenne pondérée vaut :
(12.5*2 + 13.6*3 + 18.4*5 + 9.7*4)/(2 + 3 + 5 + 4) = 14.042857143.
On entrera successivement :
  • le nombre de valeurs des deux listes,
  • les valeurs de la liste Val (ce sont des floats)
  • les valeurs de la liste Coeff (ce sont des entiers)

Puis le programme affichera la moyenne pondérée.

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Mode d'une liste

La valeur la plus souvent présente dans une liste s'appelle son mode.
Exemple : si L = [12, 15, 13, 15, 14, 12, 15, 13], son mode est 15.
Ecrire un programme qui attend une liste d'entiers et qui affiche son mode. On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste.

Puis le programme affichera le mode.

Si la liste est multimodale, on renverra la première des valeurs de la liste correspondant à l'effectif maximal.
Exemple : si L = [17, 12, 15, 13, 15, 14, 15, 12, 15, 13], 12 et 15 sont les modes (ils apparaissent tous les deux 3 fois). On affichera 12 car c'est la première valeur de la liste qui est un mode.

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Modes d'une liste multimodale

La valeur la plus souvent présente dans une liste s'appelle son mode.
Exemple : si L = [12, 15, 13, 15, 14, 12, 15, 13], son mode est 15.
Parfois une liste peut être multimodale :
Exemple : si L = [12, 15, 13, 15, 14, 12, 15, 12, 13], ses deux modes sont 12 et 15.
Ecrire un programme qui attend une liste d'entiers et qui affiche la liste de ses modes. On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste.

Puis le programme affichera la liste des modes au format habituel.
On attend simplement l'instruction print (listeModes)

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Tronquer toutes les chaines d'une liste

Ecrire un programme qui attend une liste de chaines de caractères et un entier N et qui tronque toutes les chaines de la liste pour qu'elles ne contiennent plus que N caractères au plus.
Le programme ne transformera pas la liste elle-même mais créera une nouvelle liste contenant les chaines tronquées.
On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste,
  • la valeur de N.

Puis le programme affichera la liste des modes au format habituel.
On attend simplement l'instruction print (listeTronquees)

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Supprimer les mots contenant une voyelle donnée

Ecrire un programme qui attend une liste L de chaines de caractères et une voyelle V et qui supprime de la liste L toutes les chaines contenant la voyelle V.
On entrera successivement :
  • le nombre de valeurs de la liste,
  • les valeurs de la liste,
  • la voyelle V.

Puis le programme affichera la liste finale au format habituel.
On attend simplement l'instruction print (L)

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Crypter des listes de chaines par translation

Ecrire un programme qui attend une liste L de chaines de caractères et un entier T. Le programme translate tous les caractères de chaque chaine de L de T caractères vers la droite.
Par exemple : si une chaine vaut "Krusty" et que T = 5, la chaine cryptée vaut "Pwzxyd".
  • P est la cinquième lettre après K,
  • w est la cinquième lettre après r,
  • etc...

Chaque lettre a été décalée de 5 caractères vers la droite, et on boucle lorsqu'on a atteint la fin de l'alphabet (y est devenu d).
Les caractères autres que des lettres (majuscules ou minuscules) ne sont pas transformés.
On entrera successivement :

  • le nombre de valeurs de la liste,
  • les valeurs de la liste,
  • l'entier T.

Puis le programme affichera la liste finale au format habituel.
On attend simplement l'instruction print (L)
Indication : vous aurez peut-être besoin de lire ceci.

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Linéariser une liste jusqu'à ce qu'elle ne contienne plus de liste. Pour les cracs ;-)

Ecrire un programme qui attend une liste L et qui crée une liste L1 qui contienne les mêmes éléments que L, mais sans que ce soit des listes.
Par exemple : si
L = [1,2,[3,4],5,6,[7,[8,[9,10,[11,12],13],14,15],16,17,18],19,[20,21,[22,23,24,[25,26,27],28],[29],30],31,32].
Alors, en fin de programme :
L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
Le programme affichera la liste L1 au format habituel.
On attend simplement l'instruction print (L1)

Les saisies de liste avec input provoquant des effets bizarres sur ce site, vous testerez votre programme sans input mais en codant en dur :
L = [1,2,[3,4],5,6,[7,[8,[9,10,[11,12],13],14,15],16,17,18],19,[20,21,[22,23,24,[25,26,27],28],[29],30],31,32]
Votre code ne sera donc testé que sur cette entrée là.
En revanche, si vous codez dans un environnement local, vous pourrez saisir une liste via l'instruction :
L = list(input())
Puis, au moment de la saisie, entrer la liste sous sa forme habituelle : [1, 2 ,[3, 4], 5, [6, [7, 8], 9]] par exemple.


Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Un résumé produit par des étudiants

Résumé du chapitre 5

Il a été réalisé par Angélique ETIENNE et Vinoth RAMOU, promo 2016-2017

Il est complet et bien structuré.

Autre résumé du chapitre 5

Il a été réalisé par Jorane CONGIO et Fabrice EDGARD, promo 2016-2017

Il est plus touffu que le précédent mais un peu moins agréable à l’œil.

C'est un peu comme dans la vraie vie ;-)
C'est à dire que c'est une collection d'items qui peuvent être parcourus un par un
Mais qui pourrait porter n'importe quel autre nom de variable.
list index out of range : l'indice de liste est hors limite
ValueError: 35 is not in list
Impossible d'aller plus loin sur ce site mais vous pouvez le faire chez vous en recopiant le code
C'est à dire, le nombre de fois que ce chiffre apparaît, divisé par la longueur de la liste
Il y a 10 chiffres de 0 à 9 donc, si le générateur est fiable, chaque chiffre doit tomber une fois sur 10, soit une fréquence de 1/10 = 0.1
En langage objet, on parle plus souvent de méthode
l'instruction L1 + L2 concatène les listes L1 et L2
min(L) renvoie le minimum de la liste L
max(L) renvoie le maximum de la liste L
plusieurs valeurs ont le même effectif maximal.