Chapitre 7 - Listes

// TODO: split in pages

Définition

Une liste est une suite ordonée d’éléments.

Créer une liste

Avec des crochets: [, ], et les élements séparés par des virgules:

liste_vide = []
trois_entiers = [1, 2, 3]

Listes hétérogènes

On peut mettre des types différents dans la même liste:

ma_liste = [True, 2, "trois"]

On peut aussi mettre des listes dans des listes:

liste_de_listes = [[1, 2], ["Germaine", "Gertrude"]]

Connaître la taille d’une liste

Avec len() - encore une fonction native:

liste_vide = []
taille = len(liste_vide)
print(taille)
# affiche:  0

trois_entiers = [1, 2, 3]
taille = len(trois_entiers)
print(taille)
# affiche:  3

Concaténation de listes

Avec +:

prénoms = ["Alice", "Bob"]
prénoms += ["Charlie", "Eve"]
print(prénoms)
# affiche: ['Alice', 'Bob', "Charlie", 'Eve']

On ne peut concaténer des listes que avec d’autres listes:

scores = [1, 2, 3]
scores += 4
# erreur

scores += [4]
print(scores)
# affiche: [1,2,3,4]

Test d’appartenance

Avec in:

prénoms = ["Alice", "Bob"]
print("Alice" in prénoms)
# affiche: True

prénoms = ["Alice", "Bob"]
print("Charlie" in prénoms)
# affiche: False

Itérer sur les élements d’une liste

Avec for ... in:

prénoms = ["Alice", "Bob", "Charlie"]
for prénom in prénoms:
     # La variable 'prénom" est assignée à chaque
     # élément de la liste
    print("Bonjour", prénom)
Bonjour Alice
Bonjour Bob
Bonjour Charlie

Indéxer une liste

  • Avec [] et un entier

  • Les index valides vont de 0 à n-1n est la taille de la liste:

    fruits = ["pomme", "orange", "poire"]
    
    print(fruits[0])
    # affiche: "pomme"
    
    print(fruits[1])
    # affiche: "orange"
    
    print(list[2])
    # affiche: "poire"
    
    fruits[3]
    # erreur: IndexError
    

Modifier une liste

Encore une assignation:

fruits = ["pomme", "orange", "poire"]
fruits[0] = "abricot"
print(fruits)
# affiche: ["abricot", "orange", "poire"]

Les strings sont aussi des listes (presque)

On peut itérer sur les caractères d’une string:

for c in "vache":
    print(c)

On peut tester si un caractère est présent:

print("e" in "vache")
# affiche: True

print(x" in "vache")
# affiche: False

Mais on neut peut pas modifier une string:

prénom = "Charlotte"
l = prénom[0]
print(l)
# affiche: "C"

l = prénom[3]
print(l)
# affiche: "r"

prénom[0] = "X"
# erreur: TypeError

Falsy et truthy

En réalité on peut mettre autre chose qu’une comparaison ou une variable booléenne après le if.

Si on met une liste vide, if se comportera comme si on avait mis une valeur fausse, et si la liste n’est pas vide , if se comportera comme si on avait mis une valeur vraie.:

ma_liste = [1, 2, 3]
if ma_liste:
    print("ma_liste n'est pas vide")
# affiche: ma_liste n'est pas vide

mon_autre_liste = []
if not mon_autre_liste:
    print("mon_autre_liste est vide")
# affiche: mon_autre_liste est vide

On dit que les listes vides sont Falsy et les listes non-vides Truthy