Les listes

  • En python, une liste est un tableau d'objet.
  • Chaque objet de la liste est indentifié par son rang, son indice, en commençant à 0.

Création de liste

Les listes sont identifiées à l'aide de crochets.

On peut créer une liste vide ainsi :

In [ ]:
ma_liste = []

Cette liste est de longueur 0 comme l'indique la fonction len qui renvoie sa longueur :

In [ ]:
len( ma_liste )

On peut rajouter des éléments à une liste en utilisant la fonction append. Cet élément est toujours ajouté à la fin de la liste :

In [ ]:
ma_liste.append("1er ajout")

print(ma_liste)

ma_liste.append("2ème ajout")

print(ma_liste)

Les listes peuvent contenir des éléments de types différents (du texte, des nombres, des images...) :

In [ ]:
ma_liste.append(5) # on ajoute un entier
ma_liste.append(5.36) # on ajoute un décimal

print(ma_liste)

On peut retirer un élément à l'aide de la fonction pop. Par défaut celle-ci retire le dernier élément de la liste.

In [ ]:
print(ma_liste)

ma_liste.pop()

print(ma_liste)

Si on lui passe un indice en argument, la fonction pop retirera l'élément correspondant.

Ci-dessous, on retire le deuxième élément, d'indice 1 en commençant à 0 :

In [ ]:
print(ma_liste)

ma_liste.pop(1)

print(ma_liste)
  • Saisir ci-dessous le code créant une liste contenant les éléments 'a', 5 et 9.7 :
In [ ]:
# saisir le code ici

Création de liste par compréhension

Il est possible de créer des listes en indiquant les conditions à respecter : on parle de liste créée par compréhension :

In [ ]:
liste = [k for k in range(10)]

# la liste contient tous les k entre 0 et 9

print(liste)
In [ ]:
liste = [k for k in range(10) if k % 2 == 0] # la liste contient tous les k entre 0 et 9 dont 

# le reste par la division euclidienne par 2 est 0 ==> ce sont les entiers pairs 

print(liste)
In [ ]:
liste = [lettre for lettre in "Ceci, cher lecteur, est une phrase !" if lettre.isalpha()] 

# la liste contient toutes les lettres de la phrases entre guillemets et pas la ponctuation

print(liste)
In [ ]:
# La même chose en ne prenant que les caractères de ponctuations (et les espaces)

liste = [lettre for lettre in "Ceci, cher lecteur, est une phrase !" if not lettre.isalpha()] 

print(liste)
In [ ]:
# La même chose en ne prenant que les caractères de ponctuations (et pas espaces)

liste = [lettre for lettre in "Ceci, cher lecteur, est une phrase !" if not lettre.isalpha() and not lettre == ' '] 

print(liste)
  • Saisir ci-dessous le code créant une liste contenant tous les nombres impairs de 1 à 19 :
In [ ]:
# saisir le code ici
  • Saisir ci-dessous le code créant une liste contenant tous les multiples de 3 entre 1 à 30 :
In [ ]:
# saisir le code ici

Accéder à une valeur dans une liste

On peut accéder à une valeur dans une liste en précisant son indice :

In [ ]:
liste = ['premier', 'deuxième', 'troisième']

print( liste[0] ) # on affiche le premier élément

Astuce python : on peut directement accéder au dernier élément en utilisant l'indice -1. L'avant-dernier élément est le -2 etc...

In [ ]:
liste = ['premier', 'deuxième', 'troisième']

print( liste[-1] ) # on affiche le dernier élément
  • Compléter le code ci-dessous afin d'afficher le 3-ème élément de la liste :
In [ ]:
liste = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

# saisir le code ici

Parcourir une liste

On a régulièrement besoin en programmation de passer en revue tous les éléments d'une liste.

On peut le faire à l'aide d'une boucle for allant de 0 jusqu'à la longueur de la liste :

In [ ]:
liste = [k for k in range(10)]

# la liste contient tous les k entre 0 et 9

for i in range( len(liste) ):
    print(liste[i]) # on affiche le i-ième élément

Mieux encore mais propre à Python : on utilise comme variable de notre boucle les éléments de la liste :

In [ ]:
liste = [k for k in range(10)]

# la liste contient tous les k entre 0 et 9

for nombre in liste:
    print(nombre)
In [ ]:
liste = "Ceci est une phrase !"

# la liste contient tous les k entre 0 et 9

for lettre in liste:
    print(lettre)
  • Saisir ci-dessous le code créant une liste contenant tous les nombres impairs de 1 à 19 puis les affichant.

Est-ce possible de le faire en deux lignes de code ?

In [ ]:
# saisir le code ici

Saucissoner une liste (slicing en anglais)

On doit parfois récupérer seulement certains éléments d'une liste... En python, on utilise le slicing :

In [ ]:
liste = [k  for k in range(10)]

print(liste)

sous_liste = liste[0:5] # on prend les éléments entre l'indice 0 et avant celui d'indice 5

print(sous_liste)
In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[5:9] # on prend les éléments entre l'indice 5 et avant celui d'indice 9

print(sous_liste)

Il existe des raccourcis :

In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[5:] # on prend les éléments entre l'indice 5 et la fin

print(sous_liste)
In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[:5] # on prend les éléments entre le début et avant celui d'indice 5

print(sous_liste)
In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[:] # on prend les éléments entre le début et la fin..

print(sous_liste)

Et si l'on ne veut qu'un élément sur deux ? On rajoute un argument :

In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[0:5:2] # on prend les éléments entre le début et avant celui d'indice 5 mais de 2 en 2

print(sous_liste)

Du coup on peut faire çà :

In [ ]:
liste = [k  for k in range(10)]

sous_liste = liste[::-1] # on prend les éléments entre le début et avant celui d'indice 5 mais de 2 en 2

print(sous_liste)
  • Saisir ci-dessous extrayant de liste tous les éléments de la fin au début en n'en prenant qu'un sur deux !
In [ ]:
liste = [k for k in range(20)]

# saisir le code ici