Bonjour,
J'ai fabriqué une fonction avec lambda:
trouver = lambda mot, lettre: [i for i, car in enumerate(mot) if car==lettre]
L'avantage est que ça tient sur une seule ligne, mais on aurait pu fabriquer la même fonction avec l'opérateur 'def'.
Quand j'exécute trouver("mouton", "o"), la variable mot est initialisée à "mouton" et la variable lettre est initialisée à "o". Ce qui fait que j'aurais trouvé aussi la lettre "r" dans arbre avec trouver("arbre","r").
Ce qui suit le ':' après lambda est une "compréhension de liste" (http://fr.wikipedia.org/wiki/Compr%C...nsion_de_liste). Il faut la lire comme suit:
1 2 3 4 5
| [
i
for i, car in enumerate(mot)
if car==lettre
] |
Grâce à enumerate, le 'for' ici va balayer en boucle les couples de valeurs (0,'m'), (1,'o'), (2,'u'), ..., (5,'n') en affectant la 1ère valeur à 'i' et la seconde à 'car'. Le 'i' n'est enregistré dans la liste finale que quand la lettre affectée à 'car' est égale à 'o'. Donc, seuls les couples (1,'o') et (4,'o') marcheront, et on trouvera donc [1,4] comme résultat final.
Une fois cette liste L=[1,4] obtenue, on peut accéder à chacune des valeurs 1 et 4 avec: L[0] qui donne 1 et L[1] qui donne 4.
Je te suggère d'apprendre les base du langage avec un tuto comme celui de Swinnen situé sur ce site:
http://python.developpez.com/cours/TutoSwinnen/
Tyrtamos
Partager