Accueil

Traduction

Tutoriel Python - sommaire

Tutoriel Python - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Les listes - la fonction range()

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.

Dans ce chapitre y a un nombre très important de commandes à saisir afin de vous familiariser avec la syntaxe.
Plutôt qu'utiliser la console Python vous pouvez utiliser le service en ligne Google Colab : voir fin de ce chapitre pour plus d'explications.

Les listes - découverte

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 peut appliquer à une liste les opérateurs "in" et "not in".

Liste d'entiers

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 (ou dans un "notebook" : voir fin du chapitre).

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.

La fonction range()

On peut construire facilement un série composée d'entiers grâce à la fonction range().

Tests

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().

Les arguments de la fonction range()

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 :

Listes en compréhension

Abordons maintenant la construction de listes en compréhension.

Objectif : construire la liste des carrés des entiers naturels

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 : carres =list(x**2 for x in range(1,10))

Construire la liste des premiers entiers pairs

La commande produit la liste des entiers entre 0 et 9 inclus dont la division entière par 2 donne un reste nul donc les chiffres pairs.

Construire une nouvelle liste à partir d'une autre liste

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" ?

Liste de "mots"

Une série de commandes sur une liste de chaines

La liste contient des nombres écrits en lettres !

Plus loin dans le "slicing"

À 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.
Vérifions ci-dessous !

Opérations complexes sur les listes

L’addition de deux listes et la multiplication d’une liste par un entier

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.

Des méthodes de liste

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 !

Les listes de listes

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.

Annexe : compléments sur le type range

La fonction range() seule ne construit pas une liste mais un objet de type range.
Il est possible ensuite de créer à partir d'un objet "range" des liste, tuple,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.

Tester la syntaxe Python : un autre outil

La console Python présente de nombreux inconvénients : aucune assistance pour la saisie des commandes donc des risques d'erreurs de saisie.
De plus aucune possibilité de sauvegarder les commandes.
Si vous souhaitez une interface plus agréable (avec un aide à la saisie, la possibilité de modifier une commande et de sauvegarder les commandes) utilisez la plateforme Google Colab. Dès que vous avez un compte Google vous pouvez utiliser ce service en ligne.
Pour tester un série de commandes il suffit de créer ou de modifier un "notebook".
Le service en ligne Google Colab permet d'utiliser le langage Python sans rien avoir installé sur votre ordinateur.

Se connecter à la plateforme

Composez l'URL : https://colab.research.google.com/?hl=fr
La page d'accueil :

Il suffit de cliquer sur "+Nouveau Notebook" ou sur un notebook présent dans la liste.

Ci-dessous une capture d'écran sur le fichier "test_liste.ipynb"

Vous ne voyez pas toutes les commandes stockées dans ce fichier.
Ci-dessous les commandes et l'affichage éventuel (->) qui en découle :

impairs = [x for x in range(13) if x %2 !=0]
impairs
-> [1, 3, 5, 7, 9, 11]
len(impairs)
-> 6
8 in impairs 
-> False
impairs[0]
-> 1
type(impairs)
-> list
impairs.append(13)
print(impairs)
-> [1, 3, 5, 7, 9, 11, 13]
impairs.index(5)
-> 2 		#le chiffre 5 a le rang 2 dans la liste impairs (3ième rang)
impairs.extend([15,17])
impairs.reverse()
impairs.sort()
impairs
-> [1,3,5,7,9,11,15,17]
impairs.clear()
impairs
-> []

J'ai créé la liste des premières nombres impairs en compréhension. Puis j'ai appliqué à cette liste des fonctions génériques (len(), type(), print()) mais aussi des méthodes de liste : append(), index(), etc.
Le gros avantage est que vous êtes assisté pour la saisie des commandes.
Ainsi si vous tapez : "pairs =[" le crochet fermant est ajouté automatiquement.
Si vous saisissez à l'intérieur des crochets : "x for x in range( ", la parenthèse fermante est ajoutée automatiquement.
Pour revenir à la page d'accueil il suffit de cliquer sur l'icône "CO" en haut à droite (avec lettres de couleur or).