Le contenu de cette page peut être travaillé en seconde lecture.
Même s'il existe des méthodes et des fonctions pré-programmées sur les listes, il est utile de travailler les raisonnements qui permettent de les programmer.
Redéfinir certaines opérations sur les listes
Le contenu de cette page peut être travaillé en seconde lecture.
Même s'il existe des méthodes et des fonctions pré-programmées sur les listes, il est utile de travailler les raisonnements qui permettent de les programmer.
Écrire une fonction en Python
nommée supprime_element()
et qui respecte la spécification
suivante :
Paramètres | une liste L et un entier i ( 0 ≤ i ≤ len(L)-1 ) |
---|---|
Valeur renvoyée | une liste de même contenu que L mais sans l'élément d'indice i |
del()
.pop()
On déclare une nouvelle liste L
vide avec :
L = []
L'idée est la suivante : on définit une liste vide, puis on parcourt chacun des éléments de la liste d'origine et on place cet élément dans la nouvelle liste si cet élément n'a pas pour indice celui précisé :
On peut réaliser le méme travail grâce à une génération en compréhension :
On peut supprimer l'élément d'indice i
de la liste L
grâce à la fonction pré-programmée del()
:
Toutefois, cette proposition ne répond pas tout à fait au cahier des charges
(les spécifications) : la liste L
modifiée ici est en effet
la liste d'origine, tandis que dans la proposition précédente, la liste
d'origine restait inchangée.
On peut utiliser également la méthode .pop(i)
qui supprime
l'élément d'indice i
. Comme
indiqué dans cette page, l'avantage de .pop()
est
qu'on peut en plus récupérer l'élément supprimé dans une variable :
Même remarque sur la liste que la solution précédente : la liste d'origine a été modifiée.
Écrire une fonction en Python
nommée supprime_premiere_occurrence_valeur()
et qui respecte
la spécification suivante :
Paramètres | une liste L et une valeur val |
---|---|
Valeur renvoyée | une liste de même contenu que L mais telle que le premier élément de valeur val ait été supprimé si cette valeur est présente dans la liste initiale. Si la valeur val est absente, la fonction renvoie une liste de même contenu que la liste initiale. |
.remove()
Rappel : On peut supprimer la première occurence d'une valeur dans une liste
en appliquant à cette liste la méthode .remove()
:
Comme indiqué ci-dessus, seul le premier élément ayant cette valeur est supprimé :
Toutefois, cette proposition ne répond pas tout à fait au cahier des charges
(les spécifications) : la liste L
modifiée ici est en effet
la liste d'origine, tandis que dans la proposition précédente, la liste
d'origine restait inchangée.
Écrire une fonction en Python
nommée renverser()
et qui respecte la spécification suivante :
Paramètres | une liste L |
---|---|
Valeur renvoyée | une liste contenant les éléments de L du dernier au premier |
.reverse()
Première version :
Deuxième version :
Voici une troisième façon d'écrire cette boucle :
##----- Définition des fonctions -----##
def renverser(liste):
L = []
for i in range(len(L)):
L.append(liste[~i])
return L
##----- Interaction -----##
L = [2, 8, 9, 2, 4, 6, 3, 5, 3, 4]
M = renverser(L)
print(M)
La documentation sur l'opération « ~
»
est disponible via ce lien.
Le programme précédent revient à écrire :
##----- Définition des fonctions -----##
def renverser(liste):
L = []
for i in range(len(L)):
L.append(liste[-(i+1)])
return L
##----- Interaction -----##
L = [2, 8, 9, 2, 4, 6, 3, 5, 3, 4]
M = renverser(L)
print(M)
En inversant la liste :
Cette solution présente le défaut de modifier la liste liste
passée en paramètre.
En parcourant les éléments de la liste du dernier au premier grâce aux tranches (ce qui est tout à fait hors programme pour des élèves de lycée !) :
On peut constater que la liste passée en paramètre n'est pas modifiée avec cette solution (une nouvelle liste est créée).