À la fin de cette séquence vous serez capable de :
for
pour parcourir une liste
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.
Contrairement au tuple, une liste est un objet mutable c’est-à-dire modifiable :
on peut ajouter ou supprimer des éléments à une liste.
Créons deux listes dans la console en saisissant les différents éléments.
a = [5,'spam', True, -9.3]
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
Définition :
Nous avons créé ces deux listes à l’aide d’une saisie manuelle de chacun de leurs éléments. Nous dirons dans ce cas que la liste a été créée en extension.
Une liste vide :
une_liste = []
type(une_liste)
Comme les tuples, une liste est une séquence en Python. 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' |
for jour in jours:
print(jour)
len(jours)
len(a)
'spam' in a
'jeudi' in jours
'spam' not in a
'jeudi' not in a
Modifier la valeur d'un élément d'une liste
a[0] = a[0] + 10
print(a)
jours[2] = 'wednesday'
print(jours)
Créer une liste par concaténation de listes
hybride = a + jours
print(hybride)
Ajouter un élément à une liste : la méthode append
a.append('bacon')
print(a)
jours.append('monday')
print(jours)
Ajouter plusieurs éléments en même temps (ajouter une liste à une liste) : la méthode extend
a.extend([False, 'egg', []])
print(a)
Inverser une liste en place : La méthode reverse
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
jours.reverse()
jours
Découper une liste en tranches : slicing
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
j = jours[0 : 5]
print(j)
l = jours[2:]
print(l)
#Obtenir une tranche de jours du premier à l'élément n°3
k = jours[:4]
print(k)
#Faire une copie de jours
p = jours[:]
print(p)
m = jours[1:7:2]
print(m)
n = jours[-6:-1]
print(n)
s = jours[::-1]
print(s)
Liste et l'instruction range
Attention ! 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().
#range(fin) : la liste démarre à 0 et s'achève à 10 - 1 = 9
nbres = list(range(10))
print(nbres)
Supprimer un élément d'une liste : la méthode pop
#Supprimer le dernier élément
nbres.pop()
nbres
jours = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche']
#Supprimer l'élément à la position 2
jours.pop(2)
jours
#avec del
del jours[3]
jours
Convertir une liste de chaînes de caractères en une unique chaîne de caractères : la méthode join
seq_adn = ["A", "T", "G", "A", "T"]
"".join(seq_adn)
'ATGAT'
"*".join(seq_adn)
'A*T*G*A*T'
"-".join(seq_adn)
'A-T-G-A-T'
"".join(seq_adn)
'ATGAT'
Convertir une chaîne de caractères en une liste de caractères
mon_string = "abracadabra"
list(mon_string)
['a', 'b', 'r', 'a', 'c', 'a', 'd', 'a', 'b', 'r', 'a']
Diviser une phrase (chaîne de caractères) en une liste de ses mots : la méthode split
ma_phrase = "Bienvenue à Saint-Pierre Institut de Brunoy"
ma_phrase.split() #l'espace est considéré comme le séparateur
['Bienvenue', 'à', 'Saint-Pierre', 'Institut', 'de', 'Brunoy']
help(ma_phrase.split)
Help on built-in function split: split(sep=None, maxsplit=-1) method of builtins.str instance Return a list of the words in the string, using sep as the delimiter string. sep The delimiter according which to split the string. None (the default value) means split according to any whitespace, and discard empty strings from the result. maxsplit Maximum number of splits to do. -1 (the default value) means no limit.
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 : Générer une liste par ajouts successifs en Python :
a. la liste L1 des entiers de 3 à 10.
b. la liste L2 des entiers compris entre 1 et 100.
c. la liste L3 des entiers pairs de 0 à 100.
Exercice 2 :
Soit la liste L définie par
lst = list(range(3, 18))
Exercice 3 : Itérer sur les éléments d’une liste
Ci-dessous un programme Python :
def nbres_pairs(L):
compteur = 0
for ................ in ..................:
if ..............% 2 == 0:
compteur = compteur + 1
return compteur
Exercice 4 :
Que contient la variable lst définie par le code suivant :
lst = list(range(10, -6, -2))