Remplacer un mot dans une liste comme en LISP
Bonjour ,
Je suis bloqué sur une fonction en Python je n'arrive pas à comprendre où se trouve mon erreur.
Je dois créer une fonction en python qui remplace un mot par un autre lorsqu'on le trouve dans une liste. Pour tester les fonctions j'ai décidé de remplacer le mot "chat" par le mot "chien" :lol:.
Le but de l'exercice était de reprendre une fonction que j'ai faite en LISP, de la traduire en C, puis en Python. Mais pour celle en Python je ne comprends pas pourquoi seulement la première occurrence du mot est traitée:
Voici ma fonction :
Code:
1 2 3 4
| def remplace(L, toto, tata) :
if not L : return None
if L[0] == toto : L[0] = tata #si (car L) == toto je le remplace par tata
return remplace(L[1:], toto, tata) #je passe à la suite de la liste (cdr L) |
Test de la fonction:
>L = ['chat', 'loup', 'pieuvre', 'chat', 'loutre', 'rat']
> remplace(L, "chat", "chien")
> L
['chien', 'loup', 'pieuvre', 'chat', 'loutre', 'rat']
Merci beaucoup pour votre aide.