Bienvenue sur python.gecif.net | LE SITE POUR APPRENDRE A PROGRAMMER EN PYTHON | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Un des points forts du langage Python est la création, la génération, l'analyse et la manipulation des listes. Nous allons découvrir ici la syntaxe de base et les méthodes natives liées aux listes en Python. Tous les exemples suivants sont à tester dans la console d'EduPython afin de découvrir la manipulation des listes en Python.
Création d'une liste en Python En Python une liste est une variable contenant une collection de valeurs.
Les listes se notent entre crochets : >>> [1,2,3,4] Création d'une liste dans une variable liste : >>> liste=[1,2.45,'trois',"4"] Une liste s'écrit entre crochets et peut contenir des objets de différents types. Affichage brut d'une liste avec l'instruction print : >>> print(liste) Affichage de tous les éléments d'une liste grâce à une boucle for : >>> for i in liste: A retenir : une liste peut "alimenter" une boucle for. La liste vide existe et elle se note [] : >>> liste=[] Remarque : la liste vide est la seule liste qui ne possède aucun élément.
Grâce à la concaténation et à la duplication il est possible de créer une liste à partir d'autres listes. La concaténation de deux listes se fait avec l'opérateur + : >>> [1,2,3]+[4,5,6] L'opérateur + permet de concaténer plusieurs listes : >>> liste1=[1,2,3] L'opérateur * permet de dupliquer une liste : >>> 3*liste1 En utilisant à la fois la concaténation (opérateur +) et la duplication (opérateur *) il est possible de créer en une seule ligne de code une liste complexe : >>> liste=4*([1,2]+3*["A"])+2*(["oui"]+["2000"])
La fonction list convertit une chaîne de caractères (ou tout autre objet composé) en liste : >>> list("bonjour")
Comme pour les chaînes de caractères, l'accès à un élément de la liste de fait par indexation à partir de zéro : >>> liste=[1,2,3,4,5,6] Un index négatif permet de partir de la fin de la liste (liste[-1] étant le dernier élément de la liste) : >>> liste=[1,2,3,4,5,6] Accès aux éléments d'une liste : Les indices commencent à 0. Par exemple pour une liste de 8 éléments les indices vont de 0 à 7 : >>> liste=[1,2,3,4,5,6,7,8] Le premier élément d'une liste se sélectionne par un indice [0] : >>> liste[0] Les indices négatifs ont un sens et commencent à la fin de la liste : >>> liste=[1,2,3,4,5,6,7,8] Le dernier élément d'une liste se sélectionne par un indice [-1] : >>> liste[-1] Comme pour les chaînes de caractères un système de tranchage utilisant le caractère deux points permet d'extraire facilement une partie de la liste : >>> liste=[1,2,3,4,5,6]
Extraction d'une sous-liste par la technique du "tranchage" Python dispose d'une syntaxe à la fois simple et puissante pour extraire une sous-liste d'une liste, c'est-à-dire sélectionner certains éléments de la liste. Tous les exemples ci-dessous sont à tester dans la console Python. Partons par exemple de la liste suivante contenant 6 éléments : >>> liste=[18,7,11,14,3,9] Voici un exemple d'extraction de sous-liste : >>> liste[2:4] L'indice 2:4 écrit entre crochet est ici composé de 2 indexs (2 et 4) séparés par le caractère deux-points. Le résultat obtenu est la sous-liste [11, 14], qui n'est peut-être pas le résultat que vous attendiez. Le tranchage consiste à couper la liste "en tranche" et à en extraire certaines. Pour bien comprendre la technique d'extraction d'une sous-liste par tranchage, il faut imaginer la liste comme étant un saucisson, les indexs étant des coupes et les éléments de la liste étant les tranches (la technique du "tranchage" est également appelé "saucissonage") :
En imaginant les indexs comme des coupes dans la liste, on constate que la sous-liste extraite par tranchage est l'ensemble des éléments encadrés par les indexs. Par exemple pour extraire la liste [11, 14] il faut écrire liste[2:4]
Question : quelle syntaxe permet d'extraire la sous-liste [7, 11, 14, 3] ? Réponse : liste[1:5] car les éléments à extraire sont encadrés par les indexs 1 et 5
Question : quelle syntaxe permet d'extraire la sous-liste [14, 3] ? Réponse : liste[3:5] car les éléments à extraire sont encadrés par les indexs 3 et 5
Question : quelle syntaxe permet d'extraire la même sous-liste [14, 3] mais en utilisant des indexs négatifs ? Réponse : liste[-3:-1] car les éléments à extraire sont encadrés par les indexs négatifs -3 et -1
Question : quelle syntaxe permet d'extraire la sous-liste [7, 11, 14] en utilisant un index positif et un index négatif ? Réponse : il y a cette fois 2 solutions : liste[1:-2] et liste[-5:4] qui donnent le même résultat : >>> liste[1:-2]
Question : quelles sous-listes obtient-on avec les syntaxes liste[2:5], liste[2:-1], liste[-4:5] et liste[-4:-1] ? Réponse : 4 fois la même sous-liste [11, 14, 3] car ces 4 écritures correspondent au même tranchage : >>> liste[2:5]
Dans l'indice écrit entre crochet, si le second index est égal au premier ou est à gauche du premier dans le découpage en tranches illustré ci-dessus alors la sous-liste sélectionnée sera la liste vide, qui s'écrit [] et qui ne contient aucun élément. Exemples : >>> liste[5:2]
Si on ajoute un troisième chiffre dans l'indice entre crochet il correspond au "pas" et permet de sélectionner par exemple un élément sur 2 ou un élément sur 3. Exemples : >>> liste[0:6:2]
Un indice composé d'un chiffre suivi de deux-point extrait une sous-liste allant de l'index indiqué jusqu'à la fin de la liste. Exemples : >>> liste[0:]
Un indice composé de deux-point suivi d'un chiffre extrait une sous-liste allant du début de la liste jusqu'à l'index indiqué. Exemples : >>> liste[:6] Un indice composé seulement du caractère deux-point (sans indexs chiffrés) sélectionne la liste entière : >>> liste[:] Autres exemples illustrant le découpage d'une liste en tranches : >>> liste=[1,2,3,4,5,6,7,8] Extrait une tranche de liste (sous forme d'une liste) avec des indices négatifs : >>> liste=[1,2,3,4,5,6,7,8] Avec 3 paramètres, la syntaxe d'extraction d'une tranche (avec les deux points) permet de sélectionner un élément sur 2, ou sur 3, etc. >>> liste[0:8] Exemple d'application : extrait seulement les nombres pairs ou impairs d'une liste d'entiers ordonnée : >>> list(range(20)) Avec un indice direct (positif ou négatif) le dépassement d'indice est interdit et provoque une erreur : >>> liste=[1,2,3,4,5] Avec la syntaxe des tranches, le dépassement d'indice est autorisé et ne provoque pas d'erreur. Seul les éléments réels de la liste présents dans l'intervalle sont sélectionnés : >>> liste=[1,2,3,4,5]
Création d'une liste numérique La fonction range() permet de créer facilement des listes numériques : >>> liste=range(10) Remarque : la fonction range() ne renvoie pas directement une liste. Pour obtenir un objet de type liste il faut le convertir grâce à la fonction list qui converti en liste tout objet. Avec un seul paramètre range(n) crée une liste numérique contenant les entiers de 0 à n-1 (par pas de 1) : >>> list(range(20)) Avec 2 paramètres range(n,m) crée une liste numérique contenant les entiers de n à m-1 (par pas de 1) : >>> list(range(20,29)) Avec 3 paramètres range(n,m,k) crée une liste numérique contenant les entiers de n à m-1 par pas de k : >>> list(range(20,29,3)) La fonction range() permet de créer rapidement des listes d'entiers : >>> list(range(10))
Manipulation des listes en Python Python possède un grand nombre de fonctions et de méthodes permettant une manipulation avancée des listes afin d'y effectuer un traitement fin.
La fonction len permet d'obtenir le nombre d'éléments dans une liste : >>> liste=[1,2,3,4,5] Le dernier élément d'une liste peut s'obtenir avec l'indice [len(liste)-1] : >>> liste=[0,1,2,3] Rappel : le dernier élément d'une liste peut aussi s'obtenir plus simplement par liste[-1] La liste vide, qui se note [], est la seule liste qui ne possède aucun élément. La fonction len renvoie alors la valeur 0 : >>> len([])
Pour tester si un élément appartient ou pas à une liste Python propose 2 solutions :
Voyons ces deux solutions. L'opérateur in permet de tester si un élément est présent dans la liste : >>> 3 in [1,2,3,4] Le mot clé in permet de vérifier si un élément appartient à une liste. Le résultat est booléen (VRAI ou FAUX) : >>> liste=[1,2,3,4,5] La méthode count() permet de compter le nombre d'occurance d'un élément. Si un élément est présent une seule fois dans la liste la méthode count() renvoie 1 : >>> liste=[1,2,3,4,5] Si l'élément recherché n'est pas présent dans la liste la méthode count renvoie 0 : >>> liste=[1,2,3,4,5] En cas de doublons (plusieurs fois le même élément dans la liste), la méthode count() renvoie le nombre d'occurance d'un élément particulier : >>> liste=[8,9,7,4,7,4,4,4,7,4,9,9,7,8,4,4,7,9]
Pour ajouter un élément à une liste Python propose 2 solutions :
Voyons ces deux méthodes. La méthode append permet d'ajouter un élément à la fin de la liste : >>> liste=[1,2,3] Remarque : l'élément ajouté dans la liste par append est toujours ajouté à la fin de la liste. La méthode insert permet d'insérer un nouvel élément à une position quelconque dans la liste. Par exemple pour insérer l'élément 6 à la position 2 il faut utilisert la syntaxe liste.insert(2,6) : >>> liste=[1,2,3,4,5] Ainsi l'élément 6 est désormais disponible avec l'indice [2]. Autre exemple : on dispose d'une liste incomplète des lettres de A à H : >>> liste=['A','B','C','E','F','H'] Dans cette liste il manque les lettres D et G. Insérons la lettre D : elle doit être insérer à la position 3 (liste[3] devra renvoyer 'D'). Pour cela on utilise la syntaxe liste.insert(3,'D') : >>> liste.insert(3,'D') Insérons maintenant la lettre G. Comme on veut la lettre G à la position 6 de la liste on écrit liste.insert(6,'G') : >>> liste.insert(6,'G') Ainsi, après 2 insertions, on obtient la liste complète des lettres de 'A' à 'H'.
Pour supprimer un élément d'une liste Python propose 2 solutions :
Voyons ces deux solutions. La fonction del permet de supprimer facilement un élément de la liste : >>> liste=[1,2,3,4,5,6,7,8,9] Grâce à la syntaxe des tranches la fonction del permet de supprimer directement une partie de la liste : >>> liste=[1,2,3,4,5,6,7,8,9] Remarque : avec la fonction del il faut préciser la position de l'élément à supprimer. La méthode remove permet de supprimer un élément de la liste : >>> liste=['A','B','C','D','E','F'] Remarque : avec la méthode remove il faut préciser la valeur de l'élément à supprimer. En cas de doublons la méthode remove supprimera de la liste seulement la première occurance trouvée : >>> liste=[1,2,3,1,2,3,1,2,3]
Trier une liste signifie ordonner ces éléments afin qu'ils soient rangés dans l'ordre croissant. Pour trier une liste Python propose 2 solutions :
Voyons chacune de ces deux solutions. La fonction sorted() ordonne une liste numérique sans modifier l'original : >>> sorted([7,3,9,1,4]) La fonction sorted() renvoie une nouvelle liste sans modifier la liste originale : >>> liste=[7,3,9,1,4] la méthode sort() modifie la position des éléments dans une liste afin de l'ordonner : >>> liste=[7,3,9,1,4] La méthode sort() liée aux listes modifie la liste originale.
Pour mélanger une liste il faut utiliser la fonction shuffle du module random : >>> import random
La méthode reverse permet d'inverser l'ordre des éléments dans une liste : >>> liste=[1,2,3,4] La méthode extend permet d'allonger une liste en y ajoutant plusieurs nouveaux éléments à partir d'une autre liste : >>> liste=[1,2,3,4] La méthode index renvoie la position d'un élément dans la liste (c'est-à-dire son indice en partant de 0 pour le premier élément) : >>> liste=[1,2,3,4] Si l'élément recherché n'existe pas, alors la méthode index renvoie une erreur : >>> liste=['A','B','C','D','E','F'] En cas de doublons la méthode index renvoie la position de la première occurance trouvée : >>> liste=['A','B','C','A','B','C'] La méthode pop renvoie le dernier élément de la liste et le supprime de la liste : >>> liste=['A','B','C','D','E','F'] Remarque : en cas de liste vide la méthode pop renvoie une erreur : >>> liste=[8,5]
A retenir : Il existe 3 opérateurs applicables sur des listes en Python, les voici :
Voici les fonctions Python applicables à une liste :
Il existe 9 méthodes applicables à un objet liste en Python, les voici :
La technique de tranchage permet d'extraire une sous-liste d'une liste en utilisant une syntaxe simple :
Remarque : dans la syntaxe du tranchage les entiers n, m et k peuvent être aussi bien positifs (parcourt de la liste du début vers la fin) que négatifs (parcourt de la liste de la fin vers le début).
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|