Listes

Objet "List"

Les listes sont des objets Python pouvant contenir plusieurs données ou variables. Elles sont assimilées à des tableaux (array) mais quelques différences existent.

Une liste se présente entre crochet. On peut la définir directement en utilisant les crochets :

maListe = [1,2,3,4]
# Ou de manière à expliciter le type en utilisant le constructeur de type : 
maListe = list([1,2,3,4])

La liste peut contenir des données de différents type : chaine de caractère, entier, flottant, ...

Elles sont particulièrement intéressantes en physique pour stocker des données liés à du pointage, des grandeurs dépendantes d'un facteur, ou pour tracer des graphiques.

Particularité des listes : On écrit et on lit les données qui y sont stockées par leur indice. L'indice du premier élément est ... 0 !

Manipulation de base de liste : mémo

# Création d'une liste vide
maListe = []
>>>maliste 
[]

# Associer une liste à une variable
a = 12
maListe = [a]
>>>maliste 
[12]

# Ajouter un élément à la fin de la liste
maListe.append(5)
>>>maListe
[12, 5] 

# Ajout d'un élément à une position donnée : (Rappel position 0 = 1er élément)
maListe.insert(0,"hello")
>>>maListe
['hello',12, 5]

# Lire une valeur contenu dans la liste :
>>>maListe[1]
12

# On peut aussi accèder à la dernière valeur par "-1", celle d'avant par -2, ...
>>>maListe[-1]
5

# On peut lire qu'une partie de la liste
maListe[1:] #de l'indice 1 (cest à dire le 2nd élément) jusqu'à la fin
maListe[:1] # du début jusqu'à l'indice 1 exclu


# Remplacer une valeur contenu dans la liste :
maListe[1] = "On remplace le 12"
>>>maListe
['hello', 'On remplace le 12', 5]

# Taille d'une liste (= nombre d'élements qu'elle contient)
>>>len(maListe)
3

Voilà quelques fonctions "de base" pour les listes. Il en existe bien d'autres que vous pouvez découvrir sur la documentation officielle python : https://docs.python.org/fr/3.7/tutorial/datastructures.html#more-on-lists ou sur Edupython en tapant le nom de votre liste suivi d'un point "maListe." ce qui vous fera apparaitre les fonctions disponibles pour un objet du type "list".

Applications directes

On dispose d'une liste :

liste = [1,2,4]
  1. Lire la dernière valeur de la liste

  2. Ajouter en fin de liste le numéro "7".

  3. Après reflexion, vous deviez mettre le numéro "8". Modifier la valeur

  4. Créer une nouvelle liste : liste2 qui contient "16" et "32"

  5. Concaténer les deux listes dans une nouvelle liste que l'on appelera "nouvelleListe".

  6. Combien d'éléments contient la nouvelleListe ? Afficher la longueur de "nouvelleListe"

Ex1 : L’équation du nénuphar.

Une liste contient le nombre de nénuphars dans un lac chaque jour qui passe...

  1. Définir une variable "nbNenuphar" égal à 1, correspondant au nombre de nénuphar initialement présent.

  2. Créer une liste appelée "listeNenuphar" à partir du nombre de nénuphar initial.

  3. Créer une fonction "fonctionNenuphar" qui prend comme paramètre la liste "listeNenuphar"

    1. Cette fonction va lire la dernière valeur de la liste

    2. Et va retourner une liste correspond à l'ancienne à laquelle on ajoute en fin de liste, le nouveau nombre de nénuphar, correspondant au double du jour précédent.

  4. Appeler plusieurs fois la fonction, et afficher la valeur de la liste.

Vous devez obtenir une liste qui va évoluer de [1] à [1,2] puis [1,2,4] puis [1,2,4,8] ...

Manipulations avancées

Création de liste avec range

Une manière simple de créer une liste est d'utiliser la fonction range.

Cette fonction prend 3 paramètres : le nombre de départ (inclu), celui d'arrivé (exclu), et le pas.

Remarque : Par défault le nombre de départ est 0, et le pas est 1. On peut donc spécifier que la fin si c'est ce qui est souhaité.

On utilise le constructeur "list" pour transformer son contenu en liste !

# Exemples :
>>>list(range(4,12,2))
[4, 6, 8, 10]
>>>list(range(4,12))
[4, 5, 6, 7, 8, 9, 10, 11]
>>>list(range(12))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Sélection d'une partie de liste

On peut sélectionner qu'une partie de liste en utilisant le sélectionneur ":"

uneListe=["a","b","c","d","e","f","g","h"]

# Selection Jusqu'à ...
>>>uneListe[:3] #selectionne du début jusqu'à l'élement d'indice 3 exclu (donc l'élement 0,1,2)
['a', 'b', 'c']

# Selection à partir de ...
>>>uneListe[3:] #selectionne de l'élement d'indice 3 inclu, jusqu'à la fin
['d', 'e', 'f', 'g', 'h']

# Selection à partir de ... jusqu'à ...
>>>uneListe[3:5]  # de l'indice 3 inclu jusqu'au 5 exclu... donc 3 et 4
['d', 'e']

# Selectionne tout le contenu
>>>uneListe[:]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

Copie de liste

La copie d'une liste nécessite un paragraphe dédié. Il existe en effet deux approches pour copier une liste. Il faut se rappeler qu'une liste, c'est un conteneur de plusieurs variables. Quand on copie une liste, on peut donc :

  • Affecter la même contenu de la liste précédente à la nouvelle. C'est la copie "par référence". Ce n'occupe pas d'espace mémoire car on indique simplement au programme "dans la liste il y a cette variable que j'ai déjà en mémoire". Par contre, quand on modifie la variable dans une liste, ça affecte les autres.

  • Soit on recopie le contenu de la liste dans une nouvelle, qui devient alors indépendante. C'est à dire que l'on peut modifier la copie sans modifier l'original. Cette méthode utilise plus de mémoire, mais conserve l'original.

l1 = [1,2,3,4] # Liste originale
l2 = l1 #Copie par référence
l2[1] = 5 #Modification d'une variable

>>>l1,l2 #Affichage des deux listes
([1, 5, 3, 4], [1, 5, 3, 4]) #On a modifié les deux listes, car elles font références aux mêmes variables

Un élève a réalisé un pointage, mais semble avoir fait une erreur sur une mesure.

  1. Créer une copie indépendante de la liste (on ne sait jamais...) nommée "listeCorrige"

  2. Modifier la 4ème valeur pour qu'elle passe de "320" à "3.20".

  3. Créer une fonction "calcMoyenne" qui prend pour paramètre la liste, et retourne la moyenne. On utilisera sum(liste) qui fait la somme de la liste.

listePointage = [0.10,0.90,1.80,320,5.80,8,20]

Des mesures de pointage d'intensité ont été effectuées et regroupées dans un liste :

listePointage = [0.0010,0.0480,1.5810,30.000,151.00]

On veut afficher de manière plus propre les mesures pour que ça ressemble à :

La mesure 2 a une valeur d'intensité de 0.048 A

Méthode : On va définir une fonction qui prend en paramètre la liste des valeurs, et le numéro de la mesure que l'on souhaite interroger. On fera attention à l'indice différent de la mesure (la 1ere mesure a pour indice 0).

On peut ajouter une fonction input("Quelle valeur souhaitez vous interroger ?") dans le script à la fin.

Remarque : Cette fonction ne nécessite pas de "return" car c'est une fonction qui sert uniquement à la console, à l'affichage. En réalité Python retourne "None" (réponse vide). Ce genre de fonctions, sans "return" sont appelées des "procédures" en python.

Last updated

Was this helpful?