Python en Mathématiques - Niveau 2

Redéfinir certaines opérations sur les listes

Plus tard ! 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.

Supprimer un élément de rang donné

É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
  • Une piste
  • Une solution
  • Fonction del()
  • Méthode .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.

Supprimer un élément de valeur donné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.
  • Une solution
  • Une autre solution
  • Méthode .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.

Parcourir une liste à contre-sens

É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
  • Une solution
  • Méthode .reverse()
  • Le tranchage

Avec une boucle :

Première version :


		
		

Deuxième version :


		
		

Une astuce

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).