liste I

Objectifs :

À la fin de cette séquence vous serez capable de :

  • Utiliser la boucle for pour parcourir une liste
  • Utiliser des séquences imbriquées
  • Manipuler une liste

1. Définition et syntaxe

Une liste est une structure de données Python. En effet, elle est une collection ordonnée d’objets de types quelconques séparés par des virgules, l’ensemble étant encadré par des crochets.
Comme un tuple, une liste est une séquence. Autrement dit, les listes fonctionnent comme les tuples.
Mais, contrairement au tuple, une liste est un objet mutable c’est-à-dire modifiable : on peut remplacer, ajouter ou supprimer des éléments à une liste.
On crée trois listes dans la console en saisissant les différents éléments.

In [ ]:
a = [5,'spam', True, -9.3]
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
catalogue = ["café",
            "farine",
            "yaourts",
            "jus de fruit",
            "pâtes",
            "jambon",
           "petits gâteaux"
            ]

Définition :
Ces listes ont été générées à l’aide d’une saisie manuelle de chacun de leurs éléments. On dit que ces listes ont été créées en extension.
Une liste vide :

In [ ]:
une_liste = []
In [ ]:
type(une_liste)

2. Quelques opérations sur les listes

2.1. Accéder aux éléments d'une liste

Comme les tuples, une liste est une séquence . Autrement dit, un ensemble fini et ordonné d’objets indicés (indexés, numérotés) de 0 à n-1 si la liste est composée de n objets.
Ainsi, les éléments d'une liste sont accessibles par leur position dans la liste, via l'indexation. On dit qu’une liste est un objet itérable.

Instruction à saisir dans la console Résultat
a[0]
a[2]
'jeudi'
'samedi'
jours[-1]
jours[-2]
'lundi'

In [ ]:
catalogue = ["café",
            "farine",
            "yaourts",
            "jus de fruit",
            "pâtes",
            "jambon",
           "petits gâteaux"]
    Exercice 1 :
    Écrire une expression qui permet de récupérer chacun des produits.
  • yaourts
  • jambon
  • petits gâteaux

2.2. Déterminer la longueur d'une liste

In [ ]:
len(jours)
In [ ]:
len(a)

2.3. Réaliser le test d'appartenance ou de non appartenance à une liste

In [ ]:
'spam' in a
In [ ]:
'jeudi' in jours
In [ ]:
'spam' not in a
In [ ]:
'jeudi' not in a

2.4. Afficher les éléments d’une liste à l'aide d'une boucle for (algorithme du parcours séquentiel)

In [ ]:
for produit in catalogue:
    print(produit)
In [ ]:
for i in range(len(catalogue)):
    print(catalogue[i])
In [ ]:
#en commençant par le dernier produit
for i in range(len(catalogue) - 1, -1, -1):
    print(catalogue[i])

2.5. Une liste est un objet mutable

Modifier la valeur d'un élément d'une liste

In [ ]:
a[0] = a[0] + 10
In [ ]:
print(a)
In [ ]:
jours[2] = 'wednesday'
In [ ]:
print(jours)

Créer une liste par concaténation de listes

In [ ]:
hybride = a + jours
In [ ]:
print(hybride)

Découper une liste en tranches : slicing

In [ ]:
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
In [ ]:
j = jours[0 : 5]
In [ ]:
print(j)
In [ ]:
l = jours[2:]
In [ ]:
print(l)
In [ ]:
#Obtenir une tranche de jours du premier à l'élément n°3
k = jours[:4]
In [ ]:
print(k)
In [ ]:
#Faire une copie de jours
p = jours[:]
In [ ]:
print(p)
In [ ]:
m = jours[1:7:2]
In [ ]:
print(m)
In [ ]:
n = jours[-6:-1]
In [ ]:
print(n)
In [ ]:
s = jours[::-1]
In [ ]:
print(s)
In [ ]:
# Remplacer une tranche
a[1:3] = ["hello world !"]
In [ ]:
p = jours[0::2]
print(p)

Supprimer un élément d'une liste avec del

In [ ]:
print("Notre catalogue ne contient plus farine.")
del catalogue[1]
print(f"Notre catalogue est maintenant : {catalogue}")
In [ ]:
# Supprimer une tranche
del jours[:3]

3. Autres méthodes de listes

La méthode extend permet d'ajouter une liste dans une autre liste

In [ ]:
a.extend([False, 'egg', "spam"])
In [ ]:
print(a)

La méthode reverse permet d'inverser une liste en place.

In [ ]:
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
In [ ]:
jours.reverse()
In [ ]:
jours

La méthode pop permet de renvoyer et supprimer un élément d'une liste.

In [ ]:
# Renvoyer et supprimer le dernier élément
nbres.pop()
In [ ]:
nbres
In [ ]:
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
In [ ]:
# Renvoyer et supprimer l'élément à l'index 2
jours.pop(2)
In [ ]:
jours

La méthode split permet de diviser une phrase (chaîne de caractères) en une liste de ses mots.

In [ ]:
ma_phrase = "Bienvenue à l'Institut Pierre et Marie Curie"
In [ ]:
ma_phrase.split() #l'espace est considéré comme le séparateur

4. list() et range()

Pour récupérer une liste de nombres entiers générés par la fonction range(), il faut précéder range() de la fonction list().

In [ ]:
#range(fin) : la liste démarre à 0 et s'achève à 10 - 1 = 9
nbres = list(range(10))
In [ ]:
print(nbres)

5. Convertir une liste de chaînes de caractères en une unique chaîne : la méthode join

In [ ]:
seq_adn = ["A", "T", "G", "A", "T"]
In [ ]:
"".join(seq_adn)
In [ ]:
"*".join(seq_adn)
In [ ]:
"-".join(seq_adn)
In [ ]:
"".join(seq_adn)

6. Convertir une chaîne de caractères en une liste de caractères

In [ ]:
mon_string = "pizza"
In [ ]:
list(mon_string)

7. Tuple ou liste ?

Cela dépend de l'utilisation que l'on veut faire de la structure de données.
Une liste est généralement utilisée pour une collection d'objets de même type alors qu'un n-uplet est préféré pour une collection d'objets hétérogènes.
Par ailleurs, un tuple est un bon compromis lorsque l'on ne souhaite pas que la collection de données soient modifiées par inadvertance, par exemple les constantes.
Enfin, l'exécution d'un programme est plus rapide avec un tuple qu'avec une liste.

Exercice 1 :

  1. Générer la liste, lst1, des entiers de 0 à 10.
  2. Générer la liste, lst2, des entiers pairs de 40 à 50.
  3. Ajouter en fin de la liste lst2 le nombre 100, puis la liste des entiers compris entre 45 et 50.
  4. Supprimer de la liste lst1 le premier élément, puis le dernier élément.
  5. Supprimer de lst2 la première occurrence de l’élément 46.
  6. À l’aide d’une boucle for, remplacer les éléments de la liste lst1 qui sont multiples de 3 par votre prénom.

Exercice 2 :
Qu'identifie la variable lst définie par le code suivant :

In [ ]:
lst = range(10, -6, -2)
In [ ]: