Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
La liste est l'équivalent d'un tableau indicé dans d'autres langages ; c'est donc une suite de données simples.
Lorsqu'on interroge une liste avec la fonction type(), le message retourné est "class 'list'" (instance de la classe 'list').
Une liste est une suite d'élements séparés par des virgules et encadrés par des crochets.
Les différentes éléments 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().
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 native tandis que append(),index(), sort() sont des méthodes (fonctions spécifiques à une classe d'objets).
J'aurai l'occasion de revenir sur cette distinction.
Le plus souvent les listes sont constituées d'entiers. 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é d'entiers, il faut imbriquer les fonctions range() & list() dans une même commande OU enchainer deux commandes
comme dans l'exemple 2
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 0 et step vaut +1
Avec la fonction range() on peut créer une série avec des entiers négatifs, le pas 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.
Les nombres impairs divisés par 2 donnent un reste non nul.
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.