Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Une liste est une suite de données simples.
Une liste est délimitée par des crochets et les différents éléments sont séparés par des virgules.
La liste est l'équivalent d'un tableau indicé dans d'autres langages.
Les différentes éléments d'une liste peuvent être des entiers, des flottants, des chaines, des booléens OU un mélange de tout cela.
Exercice : tapez dans la console interactive les commandes qui suivent :
"maliste" est un objet de type "list" (ou instance de la classe "list").
La liste "maliste" comprend 4 éléments de type différent : un booléen, un entier, une chaine et un flottant.
Je vous montre ci-dessus comment accéder à un élément d'une liste : nomListe[indice].
Le premier élément d'une liste a l'indice 0 ! Donc si le nombre de termes d'une liste est n alors le dernier terme a l'indice n-1.
Je crée ensuite une liste vide nommée "liste2 : rien entre les deux crochets.
Pour la remplir je pourrai utiliser certaines méthodes de liste telles insert(), append(), extend() ; méthodes qui seront abordées plus loin.
On utilise très souvent les listes d'entiers d'autant qu'elles peuvent être créées rapidement via la fonction range() ; voir paragraphe suivant.
Commandes à saisir dans la console interactive.
a est un variable contenant une liste. En effet on lui a affecté une énumération délimitée par des crochets.
La commande type(a) retourne 'list'.
Les commandes print(a) et a ont le même effet : afficher le détail de la liste.
Pour afficher le premier élément de la liste il faut écrire a[0]. On dit que le premier nombre a la position (ou indice) zéro,
le deuxième l’indice 1, etc. Attention l'indice doit être écrit entre crochets.
Attention len est une fonction générique tandis que append(),index(), sort() sont des méthodes (fonctions spécifiques à une classe d'objets) d'où des syntaxes différentes.
On peut construire facilement un série composée d'entiers grâce à la fonction native range().
Commandes à saisir dans la console.
Attention la fonction range() toute seule crée un objet de type "range" (et non pas un objet de type "list").
Pour créer une liste composée d'entiers, il faut donc imbriquer les fonctions range() & list() dans la même commande
OU enchainer deux commandes : la première basée sur range() puis une seconde basée sur list().
La fonction range() peut avoir jusqu'a trois arguments : start, stop, step.
Ainsi pairs = range(2,20,2) donne la série des entiers positifs de 2 à 20 (exclu) avec un pas de 2.
Seul l'argument stop est obligatoire; par défaut start vaut alors 0 et step vaut +1
Avec la fonction range() on peut créer une série avec des entiers négatifs, le pas aussi peut être négatif.
Exemples :
Abordons maintenant des formules un peu plus complexes : listes en compréhension.
La commande ci-dessus produit la liste des carrés des entiers de 0 à 9.
La série produite est une liste en raison des crochets qui délimitent la formule.
J'aurais pu utiliser une autre syntaxe. Voir ci-dessous.
A la place des crochets j'ai utilisé la fonction list().
La commande produit la liste des entiers entre 0 et 9 dont la division entière par 2 donne un reste nul.
Ne pensez pas qu'il faille toujours employer la fonction range() pour bâtir une liste en compréhension.
La liste "pairs" a été construite en compréhension à partir de la liste "entiers".
Seriez vous capable de produire la liste "impairs" à partir de "entiers" ?
On peut construire des listes de chaines.
La liste contient des nombres écrits en lettres !
À saisir dans la console.
Quand une chaine comprend une apostrophe, elle doit impérativement être délimitée par une paire de guillemets doubles (jamais des guillemets simples). Et c’est logique sinon l'interpréteur ne peut savoir où s’arrête la chaine.
Le slicing peut s'appliquer à n'importe quelle liste en particulier une liste de nombres.
Vérifions ci-dessous !
Exemple :
Première commande : ajout d'éléments à une nouvelle liste à partir de la liste initiale
Deuxième commande : affichage d'une liste avec le double d'éléments.
Attention, si vous écrivez seulement ma_liste2 *2 vous affichez (mais ne créez pas) une nouvelle liste à partir de liste2.
Pour créer une nouvelle liste, il faut écrire : ma_liste3 = ma_liste2*2
La syntaxe est la suivante : nomListe.méthode(arguments éventuels).
Quelques méthodes applicables à une liste :
Donc les deux méthodes remove() & pop() suppriment un élément de la liste ; mais avec remove() il faut passer en argument la valeur de l'élément alors qu'avec pop() il faut argumenter avec son rang (ou indice ou position). Sachant que le premier élément a le rang zéro !
Pour que chaque caractère d'une chaine devienne un élément d'un liste il faut utiliser la fonction générique list
Par contre pour que chaque mot d'une liste devienne un élément d'une liste il faut utiliser la méthode de chaine : split() déjà
abordée dans le chapitre précédent.
Commandes à saisir :
La fonction list() appliquée à "chaine" crée une liste qui présente peu d'intérêt ; chaque caractère de la chaine devient un item de la liste.
Par contre la méthode de chaine split() appliquée une chaine avec des séparateurs crée une liste de mots utile.
Il faut argumenter la méthode split() avec le caractère qui sert de séparateur de mots dans la chaine d'origine. Par défaut le séparateur est le caractère espace.
Et oui, c'est possible. Et vous verrez plus tard que ça peut être très parfois utile ...
J'ai crée une liste nommée "liste_de_listes" qui comprend 3 sous-listes.
Pour afficher successivement chaque sous-liste je suis obligé de créer une boucle.
C'est l'équivalent des tableaux indicés à deux dimensions en JavaScript.
La fonction range() seule ne construit pas une liste mais un objet de type range.
Il est possible ensuite de convertir un objet range en liste ou tuple voire en set.
Les tuples et les ensembles sont des séquences qui ont des caractéristiques très utiles en programmation.
Ces deux types de séquences seront étudiés plus tard.
Retenez pour l'instant qu'un tuple ne peut être modifié après avoir été créé et qu'un ensemble ne peut contenir de doublons.