Les listes sont identifiées à l'aide de crochets.
On peut créer une liste vide ainsi :
ma_liste = []
Cette liste est de longueur 0 comme l'indique la fonction len
qui renvoie sa longueur :
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 :
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...) :
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.
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 :
print(ma_liste)
ma_liste.pop(1)
print(ma_liste)
# saisir le code ici
Il est possible de créer des listes en indiquant les conditions à respecter : on parle de liste créée par compréhension :
liste = [k for k in range(10)]
# la liste contient tous les k entre 0 et 9
print(liste)
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)
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)
# 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)
# 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 le code ici
# saisir le code ici
On peut accéder à une valeur dans une liste en précisant son indice :
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...
liste = ['premier', 'deuxième', 'troisième']
print( liste[-1] ) # on affiche le dernier élément
liste = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
# saisir le code ici
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 :
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 :
liste = [k for k in range(10)]
# la liste contient tous les k entre 0 et 9
for nombre in liste:
print(nombre)
liste = "Ceci est une phrase !"
# la liste contient tous les k entre 0 et 9
for lettre in liste:
print(lettre)
Est-ce possible de le faire en deux lignes de code ?
# saisir le code ici
On doit parfois récupérer seulement certains éléments d'une liste... En python, on utilise le slicing :
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)
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 :
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)
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)
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 :
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 çà :
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)
liste
tous les éléments de la fin au début en n'en prenant qu'un sur deux !liste = [k for k in range(20)]
# saisir le code ici