Objectifs
- Etre capable de manipuler simplement les listes en python.
Opération sur les listes
- Les listes supportent l’opérateur
+ de concaténation, ainsi que l’opérateur * pour la duplication :
site = ['Le', 'site', 'apcpedagogie.com', 'est','un', 'site', "d'autoformation"]
objectif = ['son','objectif','est', 'de', 'donner', 'à tout',
'personnes,', 'un', 'ensemble', 'de', 'contenus',
'simples', 'et', 'compréhensible.']
Concaténation:
- site + objectif=
['Le', 'site', 'apcpedagogie.com', 'est', 'un', 'site', "d'autoformation",'sont','objectif', 'est', 'de', 'donner', 'à tout', 'personnes,', 'un', 'ensemble', 'de', 'contenus', 'simples', 'et', 'compréhensible.']
Duplication:
- site * 2=
['Le', 'site', 'apcpedagogie.com', 'est', 'un', 'site', "d'autoformation", 'Le', 'site', 'apcpedagogie.com', 'est', 'un', 'site', "d'autoformation"]
Opération
- range()
- La fonction
range() permet de créer une liste. Elle permet d'utiliser 3 paramètres. Le premier contient le numéro de départ de la liste, le second le dernier nombre de la liste et finalement l'incrément entre chaque nombre généré.
- Conjointement range() et len()
- Conjointement utilisé avec la fonction
len(), elle permet de créer une boucle qui parcours tous les éléments d'une liste.
- On peut combiner les fonctions
range() et len() pour obtenir automatiquement tous les indices d'une liste.
site = ['Le', 'site', 'apcpedagogie.com', 'est','un', 'site', "d'autoformation"]
for index in range(len(site)):
print (index, site[index])
Résultat d'exécution:
0 Le
1 site
2 apcpedagogie.com
3 est
4 site
5 d'autoformation
Trier une liste
- Dans l'ordre croissant
- Les fonctions
sorted() et sort() permettent de trier une liste.
#utiliser sorted sans le nom de la liste
print(sorted([1, 4, 3, 2]))
#utiliser sorted avec le nom de la liste
maListe=[1, 4, 3, 2]
print(sorted(maListe))
#utiliser le nom de la liste puis sort()
maListe.sort()
print(maListe)
- La fonction
sorted() retourne une nouvelle liste triée
- Si vous n'avez pas besoin de la liste originale,l'utilisation de la fonction
sort() est souhaitable.
- Dans l'ordre décroissant
- Par défaut,
sort() ne nécessite aucun paramètre supplémentaire. Cependant, il a deux paramètres facultatifs:
- L'un de ces paramètres est
reverse - Si True, la liste triée est inversée (ou triée par ordre décroissant)
- Alternativement pour
sorted(), vous pouvez utiliser le code suivant.sorted(list, reverse=True)
maListe=[1, 4, 3, 2]
maListe.sort(reverse=True)
print(maListe)
"""
Production:
[4, 3, 2, 1]
"""
print(sorted(maListe,reverse=True))
"""
Production:
[4, 3, 2, 1]
"""
- Différence entre
sort () et sorted ()
- La différence la plus simple entre
sort () et sorted () est: sort () change la liste directement et ne renvoie aucune valeur, tandis que sorted () ne change pas la liste et retourne la liste triée.
Ajout à la fin d'une liste
Ajouter un élémentlist.append
- Cette fonction sert à ajouter un élément à la fin d'une liste.
- Ajoute son argument en tant qu'élément unique à la fin d'une liste. La longueur de la liste augmente de un.
- syntaxe:
# Ajoute un objet (un nombre, une chaîne ou un
# une autre liste) à la fin de ma_liste
ma_liste.append (objet)
- Exemple:
liste = [1, 2, 3, 4, 5]
liste.append(6)
print liste # [1, 2, 3, 4, 5, 6]
Ajouter une liste list.extend
- La méthode
extend() ajoute les éléments de liste spécifiés (ou tout élément itérable) à la fin de la liste actuelle.
extend (): itère sur son argument et ajoute chaque élément à la liste et étend la liste. La longueur de la liste augmente du nombre d'éléments dans son argument.
- syntaxe:
# Chaque élément d'un itérable est ajouté
# à ma_liste
ma_liste.extend (itérable)
- Exemple:
fruits = ['orange', 'banane', 'poire']
points = (1, 4, 5, 9)
fruits.extend(points)
Utilisation de la méthode insert()
- La méthode
append() ne fonctionne que pour l’ajout d’éléments à la fin de la liste, pour l’ajout d’un élément à la position souhaitée, la méthode insert() est utilisée.
- Contrairement à
append() qui ne prend qu’un seul argument, la méthode insert() nécessite deux arguments (position, valeur).
Sans méthode
- Exemples:
a = ['a', 'b', 'c']
a += ['d', 'e'] ou a += 'de'- Le résultat sera:
a=['a', 'b', 'c', 'd', 'e']
- N'oubliez pas que lorsque Python itère sur une chaîne, le résultat est une liste des caractères du composant. Ainsi, cette déclaration ajoute également la liste ['d', 'e'].
a = ['a', 'b', 'c']
a[len(a):] = ['d', 'e']
- Le résultat sera:
a=['a', 'b', 'c', 'd', 'e']
Inverser l'ordre des éléments d'une liste
- Cette fonction permet de renverser l'ordre des éléments d'une liste, mais sans renvoyer de valeur : en effet, le renversement se fait directement dans la liste sur laquelle on a utilisé la méthode.
- Si on veut récupérer la valeur, on peut utiliser la fonction
reversed(liste) (qui n'est pas une méthode de la classe list).
- syntaxe:
list.reverse()
- Exemple:
liste = [1, 2, 3, 4, 5]
liste.reverse()
print (liste)
#Sortie: [5, 4, 3, 2, 1]
#Impression
for o in reversed(liste):
print(o)
# Sortie: 5, 4, 3, 2, 1 <-- pas modifié
enlever (effacer) un élément d'une liste
list.remove()
- La méthode
remove() permet de supprimer une valeur dont on ne veut pas dans la liste.
- syntaxe:
list.remove(valeur)
- Exemple:
liste = [1, 2, 3, 4, 5]
liste.remove(1)
print liste # [2, 3, 4, 5]
list.del()
- L’instruction
del supprime un élément d’une liste à un indice déterminé :
- L’instruction
del, permet d’effacer un ou plusieurs éléments à partir de leur(s) index :
>>> del nombres[2]
>>> nombres
[12, 72, 17, 10]
>>> del nombres[1:3]
>>> nombres
[12, 10]
Différences
Notez bien la différence entre la méthode remove() et l’instruction del: del travaille avec un index ou une tranche d’index, tandis que remove() recherche une valeur (si plusieurs éléments de la liste possèdent la
même valeur, seul le premier est effacé).
Compter le nombre d’éléments d'une liste
- La méthode .count() compte le nombre d’éléments (passés en argument) dans une liste :
>>> a=[1 , 2, 4, 3, 1, 1]
>>> a. count (1)
3
>>> a. count (4)
1
>>> a. count (23)
0
Application
Énoncé
- Ecrire un script python qui permet de supprimer l’élément numéro i d’une liste puis insérer cet élément aux positions p1 et p2 saisies par l’utilisateur.
Solution proposée
liste = [1, 2, 3, 4, 5, 6, 7, 8]
print("Liste initiale : "+str(liste))
#L’instruction del supprime un élément d’une liste à un indice déterminé
#Récupérer l'élément à supprimer
element=liste[2]
print("Elément à supprimer est : "+str(element))
del liste[2]
print("Liste après supression "+str(liste))
#Demander à l'utilisateur de saisir la première position
position1=int(input("Saisir la position 1 de l'élément à insérer"))
if (position1<=len(liste)):
print("La position 1 saisie est :"+ str(position1))
# Ajout d'un élément à position spécifique (en utilisant la méthode d'insertion)
liste.insert(position1, element)
print("Nouvelle liste après insertion dans la postion : ",str(position1)+"\n",str(liste))
position2=int(input("Saisir la position 2 de l'élément à insérer"))
if (position2<=len(liste)):
print("La position 2 saisie est :"+ str(position2))
# Ajout d'un élément à position spécifique (en utilisant la méthode d'insertion)
liste.insert(position2, element)
print("Nouvelle liste après insertion dans la postion : ",str(position1)+"\n",str(liste))