Dans cette partie de cours, on va découvrir les listes en python ( Python : Les listes ).

Python : Les listes

Une liste stocke un ensemble d’éléments dans un ordre particulier (une séquence), elles permettent de stocker un grand nombre de données de différents types au même endroit.

La liste est le type de données le plus polyvalent disponible dans Python qui peut être écrit  comme une liste de valeurs séparées par des virgules (éléments) entre crochets. Les éléments de la liste peuvent être modifiés.

 Exemple :

  • Création et initialisation d’une liste :

On peut créer une liste vide ou initialement remplie. Python reconnu les listes automatiquement.

Exemples :

  • L1 = [] # liste vide 
  • L2 = [1, 2, 3] # liste d’entiers
  • L3 = [1, “Hello”, 3.4] # liste contenant différentes types de données

 Pour initialiser une liste, on peut ajouter les éléments au moment de la déclaration, ou l’initialiser via une boucle for .

Méthode 1 :

 x=[1,’bien’,20.25,3,'zineb']

Méthode 2 : 

L = []
for i in range(0,10):
L.append(i**2)
print(L)

Remarque : on peut initialiser une liste comme suit:

L = [x*3 for x in 'ABCD']
print(L)
# Prints [AAA, 'BBB', 'CCC', 'DDD']

Exemple : 

L = [-12, -20, 10, 15, 42]

L1 = [x for x in L if x >= 0]

print(L1)

# Prints [10,15,42]
L = [-12, -20, 10, 15, 42]
L1 = []
for x in L:
  if x >= 0:
      L1.append(x)
print(L1)
# Prints [10,15,42]

 

Exercices :

Exercice 1 : programme en python qui permet de sauvegarder les noms de 10 stagiaires saisi par l’utilisateur.

Exercice 2 : Remplir une liste avec 10 entiers donnés par l’utilisateur .Puis, le programme trouve le plus grand et le plus petit de ces nombres.

Solution de l’exercice 2 :

l=[]
#Remplissage
for i in range(10): l.append(int(input("Donner un nombre:")))
#Recherche le pp et pg
#1- initialisation
min=l[0]
max=l[0]
#2 -recherche dans le reste
for elt in l:
if min>elt:
min=elt
if max<elt:
max=elt
#3 affichage
print("Le plus petit :",min)
print("Le plus grand:",max)
print(l)

Exercice  3 :

Proposer un programme qui demande un nombre entier x entre 1 et 10 jusqu’à ce que la réponse convienne. Puis, le programme remplit une liste L avec les multiplicateurs de x qui sont entre 0 et 100.On affiche alors la liste

Solution : 

while True :  x=int(input("Donner un entier entre 1 et 10:"))
  if x>10 or x<=0:
print("Essayer une autre fois:")
  else:
     print("Bravo!!")
      break
l=[]
for i in range(0,100,x):
   l.append(i)

"""for i in range (0,100):
   m=x*i
   if m>=100:
       break
   l.append(m)
   """

print(l)

exercice 4 :

Programme qui permet de lire 10 note. Puis affiche les notes qui sont >moyenne

Solution :

l=[]
for i in range(10):
l.append(float(input("Donner une note:")))
somme=0
for note in l:
   somme+=note
moyenne=somme/10
print(l)
print("La moyenne:", moyenne)
for note in l:
   if note>moyenne:  
    print(note,end=" ")

Accès aux éléments d'une liste

On peut accéder à un élément via son indice (positif ou négatif).On peut aussi récupérer une plage d’éléments en utilisant l’opérateur ‘ :’ .

Exemples :

– print(x[0]) #le premier élément de la liste

– print(x[-1])  #le dernier élément de la liste

– x=[61,’142′,3,’k’,1,’f’]

  print(x[0:3]) #les éléments entre l’index 0 et l’index 2

  print(x[1:])   #les éléments après l’index 0

  print(x[:2])   #les éléments avant l’index 2

Exercice :

Soit L une liste remplie par des données saisies au clavier. On veut créer deux listes L1 et L2 de la manière suivante :

– L1 est la copie de la première moitié de L

– L2 est la copie de la deuxième moitié de L

Parcourir une liste

# méthode 1 : x =element de la liste

for x in L:
    print(x)

# méthode 2 : x=indice

for x in range(len(L)):
   print(notes[x])

Traitements classiques sur les listes

On peut utiliser des méthodes prédéfinies pour faire des traitements classiques, ou implémenter l’algorithme de base sans utilisation des méthodes prédéfinies.

 

Exemple :

Moyennes = [10.5, 11.75 , 15.25, 12 , 9, 18.25 , 10.5, 5.5, 11.5, 14.05]
for x in range(len(Moyennes)):
    print(Moyennes [x],end="-")
print(sum(Moyennes))
print(max(Moyennes))
print(min(Moyennes))

      Ou // sans utilisation des fonctions prédéfinies :

somme = 0

for note in Moyennes:

  somme += i

print(somme)

ou 

somme = 0

for i in  range(len(Moyennes)):

  somme += notes[i]

print(somme)

On peut utiliser un ensemble de méthodes prédéfinies pour manipuler les listes : append(), insert(), extend(), pop(), remove(), split(), join().

Exemple :soit la liste : Villes=[‘safi’,’agadir’,’tanger’,’fes’,’casa’,’Rabat’ ]

  • Remplacer le deuxième élement de la liste par ‘taza’

  Villes[1] = ‘taza’

  • Supprimer le troisième élément :

                 del Villes[2]

  • Modification de plusieurs valeurs de liste

Que faire si vous souhaitez modifier plusieurs éléments contigus dans une liste à la fois?

Python permet cela avec une affectation de tranche, qui a la syntaxe suivante:

   a[m:n] = <itérable>

 Exemple :

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes) # ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
Villes[1:5]='casa'
print(Villes) # ['safi', 'c', 'a', 's', 'a', 'Rabat']

Vous pouvez insérer plusieurs éléments à la place d’un seul élément – utilisez simplement une tranche qui ne désigne qu’un seul élément :

Villes[1:2]='casa'

print(Villes) # [‘safi’, ‘c’, ‘a’, ‘s’, ‘a’, ‘tanger’, ‘fes’, ‘casa’, ‘Rabat’]

Notez que ce n’est pas la même chose que de remplacer l’élément unique par une liste :

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]

print(Villes) # [‘safi’, ‘agadir’, ‘tanger’, ‘fes’, ‘casa’, ‘Rabat’]

Villes[1]=’casa’

print(Villes)# [‘safi’, ‘casa’, ‘tanger’, ‘fes’, ‘casa’, ‘Rabat’]

Vous pouvez également insérer des éléments dans une liste sans rien supprimer. Spécifiez simplement une tranche de la forme [n: n] (une tranche de longueur nulle) à l’index souhaité

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]

print(Villes) # [‘safi’, ‘agadir’, ‘tanger’, ‘fes’, ‘casa’, ‘Rabat’]

Villes[1:1]=’casa’

print(Villes) # [‘safi’, ‘c’, ‘a’, ‘s’, ‘a’, ‘agadir’, ‘tanger’, ‘fes’, ‘casa’, ‘Rabat’]

list.extend() : Ajoute à la fin d’une liste, mais l’argument devrait être un itérable. Les éléments de sont ajoutés individuellement :

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)
Villes.extend(['taza','nadour','ouajda'])
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat', 'taza', 'nadour', 'ouajda']

list.insert(, ) : Comme vous savez, pour ajouter un élément à la fin de la liste, on peut utiliser  la méthode append. Si on veut insérer l’élement à une position spécifique, on doit utiliser la méthode insert. Cette méthode insère l’objet dans la liste a à spécifié.

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
Villes.insert(1,'dakhla')
print(Villes)# ['safi', 'dakhla', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']

list.remove() : Supprime l’objet de la liste a. Si n’est pas dans un, une exception est levée : 

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
Villes.remove('dakhla')
print(Villes)# ['safi', 'dakhla', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']

a.pop(index=-1) : Cette méthode diffère de .remove () de deux manières:

1- Vous spécifiez l’index de l’élément à supprimer, plutôt que l’objet lui-même.

2- La méthode renvoie une valeur : l’élément qui a été supprimé.

Villes=['safi','agadir','tanger','fes','casa','Rabat' ]
print(Villes)# ['safi', 'agadir', 'tanger', 'fes', 'casa', 'Rabat']
v=Villes.pop(1)
print(v)#agadir
print(Villes)# ['safi', 'tanger', 'fes', 'casa', 'Rabat']

Les méthodes sur les listes

Le type liste dispose de méthodes supplémentaires. Voici toutes les méthodes des objets de type liste :

  • list.append(x) : Ajoute un élément à la fin de la liste. Équivalent à a[len(a):] = [x].
  • list.extend(iterable) : Étend la liste en y ajoutant tous les éléments de l’itérable. Équivalent à a[len(a):] = iterable.
  • list.insert(i, x) : Insère un élément à la position indiquée. Le premier argument est la position de l’élément courant avant lequel l’insertion doit s’effectuer, donc a.insert(0, x) insère l’élément en tête de la liste et a.insert(len(a), x) est équivalent à a.append(x).
  • list.remove(x) : Supprime de la liste le premier élément dont la valeur est égale à x. Une exception ValueError est levée s’il n’existe aucun élément avec cette valeur.
  • list.pop([i]) : Enlève de la liste l’élément situé à la position indiquée et le renvoie en valeur de retour. Si aucune position n’est  spécifiée, a.pop() enlève et renvoie le dernier élément de la liste (les crochets autour du i dans la signature de la méthode indiquent que ce paramètre est facultatif . 
  • list.clear() : Supprime tous les éléments de la liste. Équivalent à del a[:].
  • list.index(x[, start[, end]]) : Renvoie la position du premier élément de la liste dont la valeur égale x. Une exception ValueError est levée si aucun élément n’est trouvé.
  • list.count(x) : Renvoie le nombre d’éléments ayant la valeur x dans la liste.
  • list.sort(key=None, reverse=False) : Ordonne les éléments dans la liste (les arguments peuvent personnaliser l’ordonnancement, voir sorted() pour leur explication).
  • list.reverse() : Inverse l’ordre des éléments dans la liste.
  • list.copy() : Renvoie une copie superficielle de la liste. Équivalent à a[:].

Exercice1 :

 nous allons lire les notes de ahmad et khalid dans n matières (coefficient =1 pour chaque matière). on veut afficher les moyennes d’ahmad et khalid puis le nom de celui ayant

la meilleure moyenne

solution :

Entrées : notes ahmad , notes khalid, nombre des matières

Traitements : calcul moyennes (ahmad et khalid) , trouver le premier

Sortie : afficher moyennes et le nom du premier

'''
n=int(input("Donner le nombre des matières:"))
Notes_Ahmad=[]
Notes_Khalid=[]
print("Donner les notes de khalid:")
for i in range(n):
  Notes_Khalid.append(float(input("donner la note:")))
print("Donner les notes de Ahmad:")
for i in range(n):
   Notes_Ahmad.append(float(input("donner la note:")))
print("Notes de halid ",Notes_Khalid)
print("Notes de Ahmad :",Notes_Ahmad)
moyenne_K=0
for note in Notes_Khalid:
   moyenne_K+=note
moyenne_K/=n
moyenne_H=0
for note in Notes_Ahmad:
   moyenne_H+=note
moyenne_H/=n
print("Moyenne de Khalid:",moyenne_K)
print("Moyenne de Ahmad:",moyenne_H)
if moyenne_K<moyenne_H:
   print("Le premier:Ahmad")
elif moyenne_K>moyenne_H:
print("Le premier:Khalid")
else:
   print("Les deux ont la meme moyenne")

Exercice 2 :

Refaire l’exercice 1 avec l’utilisation de la fonction sum

n=int(input("Donner le nombre des matières:"))
Notes_Ahmad=[]
Notes_Khalid=[]
print("Donner les notes de khalid:")
for i in range(n):
   Notes_Khalid.append(float(input("donner la note:")))
print("Donner les notes de Ahmad:")
for i in range(n):
  Notes_Ahmad.append(float(input("donner la note:")))
print("Notes de khalid :",Notes_Khalid)
print("Notes de Ahmad :",Notes_Ahmad)
moyenne_K=sum(Notes_Khalid)/n
moyenne_H=sum(Notes_Ahmad)/n
print("Moyenne de Khalid:",moyenne_K,"La meilleure note:",max(Notes_Khalid))
print("Moyenne de Ahmad:",moyenne_H,"La meilleure note :",max(Notes_Ahmad)
if moyenne_K<moyenne_H:
   print("Le premier:Ahmad")
elif moyenne_K>moyenne_H:
   print("Le premier:Khalid")
else:
   print("Les deux ont la meme moyenne")

Vous pouvez suivre la liste des vidéos du cours Python (Programmation ) sur notre chaine youtube :  Vidéos Python (cours) , Vidéos Python (exercices).

Aussi, notre cours bien structuré est sur le site : cours python

Découvrir plus de cours

Algorithmes, base de données, merise, SQL

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *