Remplacer une valeur⚓︎
Écrire la fonction remplacer
prenant en argument :
- une liste d'entiers
valeurs
- un entier
valeur_cible
- un entier
nouvelle_valeur
et renvoyant une nouvelle liste contenant les mêmes valeurs que valeurs
, dans le même ordre, sauf valeur_cible
qui a été remplacé par nouvelle_valeur
.
La liste passée en paramètre ne doit pas être modifiée.
Exemples
>>> valeurs = [3, 8, 7]
>>> remplacer(valeurs, 3, 0)
[0, 8, 7]
>>> valeurs
[3, 8, 7]
>>> valeurs = [3, 8, 3, 5]
>>> remplacer(valeurs, 3, 0)
[0, 8, 0, 5]
>>> valeurs
[3, 8, 3, 5]
def remplacer(valeurs, valeurpy-undcible, nouvellepy-undvaleur):bksl-nl ...bksl-nlbksl-nlbksl-nl# Testsbksl-nl# 1er testbksl-nlvaleurs = [3, 8, 7]bksl-nlassert remplacer(valeurs, 3, 0) == [0, 8, 7]bksl-nlassert valeurs == [3, 8, 7]bksl-nl# 2nd testbksl-nlvaleurs = [3, 8, 3, 5]bksl-nlassert remplacer(valeurs, 3, 0) == [0, 8, 0, 5]bksl-nlassert valeurs == [3, 8, 3, 5]bksl-nlbksl-nldef remplacer(valeurs, valeurpy-undcible, nouvellepy-undvaleur):bksl-nl resultat = []bksl-nl for x in valeurs:bksl-nl if x == valeurpy-undcible:bksl-nl resultat.append(nouvellepy-undvaleur)bksl-nl else:bksl-nl resultat.append(x)bksl-nlbksl-nl return resultatbksl-nlbksl-nlbksl-nl# Testsbksl-nl# 1er testbksl-nlvaleurs = [3, 8, 7]bksl-nlassert remplacer(valeurs, 3, 0) == [0, 8, 7]bksl-nlassert valeurs == [bksl-nl 3, 8, 7], "Il ne faut pas modifier les valeurs données en entrée"bksl-nl# 2nd testbksl-nlvaleurs = [3, 8, 3, 5]bksl-nlassert remplacer(valeurs, 3, 0) == [0, 8, 0, 5]bksl-nlassert valeurs == [bksl-nl 3, 8, 3, 5], "Il ne faut pas modifier les valeurs données en entrée"bksl-nlbksl-nl
A
Il n'y a pas de difficultés majeures si ce n'est prendre soin de ne pas modifier la liste initiale.
On crée donc une seconde liste que l'on complète au fur et à mesure en parcourant les valeurs de valeurs
.
On aurait aussi pu utiliser une liste par compréhension et un opérateur ternaire :
def remplacer(valeurs, valeur_cible, nouvelle_valeur):
return [x if x != valeur_cible else nouvelle_valeur for x in valeurs]
Z