Le contenu de cette page peut être travaillé en seconde lecture.
Opérations sur listes
Le contenu de cette page peut être travaillé en seconde lecture.
Écrire une fonction en Python qui respecte la spécification suivante :
Paramètres | une liste L et un entier i ( 0 \( \leqslant\) i \( \leqslant\) 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 = []
def supprime_element(liste, indice_element) :
L = []
for i in range(len(liste)):
if i != indice_element :
L.append(liste[i])
return L
L1 = [1, 2, 3, 4, 5, 6]
# on supprime l'élément d'indice 3,
# c'est à dire ici l'élément de valeur 4
L2 = supprime_element(L1, 3)
print(L2)
Python permet une écriture plus synthétique de cette fonction (mais il n'est pas obligatoire de maîtriser ce type de syntaxe pour bien programmer quand même !):
def supprime_element(liste, indice_element) :
return [ liste[i] for i in range(len(liste)) if i!=indice_element]
L1 = [1, 2, 3, 4, 5, 6]
# on supprime l'élément d'indice 3,
# c'est à dire ici l'élément de valeur 4
L2 = supprime_element(L1, 3)
print(L2)
On peut supprimer l'élément d'indice i
de la liste L
grâce à la fonction del()
:
Toutefois, cette proposition n'est pas tout à fait équivalente à la
solution précédente : 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
. 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 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()
def supprime_premiereOccurrence_valeur(liste, val):
L = []
trouve = False
indice = 0
while not(trouve) and indice < len(liste) :
if liste[indice] == val :
trouve = True
else :
L.append(liste[indice])
indice += 1
for i in range(indice, len(liste)):
L.append(liste[i])
return L
L = [2, 8, 9, 2, 4, 6, 3, 5, 3, 4]
M = supprime_premiereOccurrence_valeur(L, 3)
print(M)
print( supprime_premiereOccurrence_valeur(L, 15) )
0n 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é :
Cette proposition n'est pas tout à fait équivalente à la solution précédente :
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 qui respecte la spécification suivante :
Paramètres | une liste L |
---|---|
Valeur renvoyée | / |
Affichage | valeurs de la liste, du dernier au premier élément |
Avec une boucle :
L = ['a','b','c','d','e','f','g']
for i in range(len(L)-1, -1, -1) :
print(L[i], end=" ")
Voici une autre façon d'écrire cette boucle :
L = ['a','b','c','d','e','f','g']
for i in range(len(L)) :
print(L[~i], end=" ")
La documentation sur l'opération « ~
»
est disponible via ce lien.
Le programme précédent revient à écrire :
L = ['a','b','c','d','e','f','g']
for i in range(len(L)) :
print(L[-(i+1)], end=" ")
En inversant la liste :
L = ['a','b','c','d','e','f','g']
L.reverse()
for x in L :
print(x, end=" ")
Cette solution présente le défaut de modifier la liste.
En parcourant les éléments de la liste du dernier au premier grâce aux tranches :
L = ['a','b','c','d','e','f','g']
for x in L[::-1] :
print(x, end=" ")
La liste n'est pas modifiée avec cette solution.