TD⚓︎
Exercice 1
En utilisant la fonction filtre_liste définie ci-dessous, proposer une fonction:
commence_par_a(txt)renvoyantTruesi la chainetxtcommence paraetFalsesinon. Exemple ci-dessous:>>> filtre_liste(commence_par_a, ['allemand', 'anglais', 'francais']) ['allemand', 'anglais']contient_roi(txt)renvoyantTruesi la chainetxtcontient la chaineroietFalsesinon. Exemple ci-dessous:>>> filtre_liste(contient_roi, ['roi des francs', 'roi du Maroc', 'prince de Galles']) ['roi des francs', 'roi du Maroc']contient(chaine)renvoyant une fonction de paramètretxtqui renvoieTruesi la chainetxtcontient la chainechaineetFalsesinon.>>> filtre_liste(contient('Maroc'), ['roi des francs', 'roi du Maroc', 'prince de Galles']) ['roi du Maroc']
def filtre_liste(op, liste):
lst = []
for elem in liste:
if op(elem):
lst.append(elem)
return lst
-
def commence_par_a(txt): return txt[0] == "a" -
def contient_roi(txt): return 'roi' in txt -
def contient(chaine): def contient_interne(txt): return chaine in txt return contient_interne
Exercice 2
Compléter la fonction applique_fonction_sur_liste(fonction, liste) renvoyant une liste où chaque élément correspond à l'élément de la liste liste sur lequel on a appliqué la fonction fonction.
Exemple :
def oppose(a):
return -a
>>> applique_fonction_sur_liste(oppose, [1, 2, 3, 4, -5])
[-1, -2, -3, -4, 5]
À compléter:
def applique_fonction_sur_liste(fonction, liste):
liste_retour = ...
for elem in ... :
liste_retour.append(...)
return ...
def applique_fonction_sur_liste(fonction, liste):
liste_retour = []
for elem in liste :
liste_retour.append(fonction(elem))
return liste_retour
Exercice 3
Écrire la fonction reduire_liste(fonction, liste) renvoyant une valeur où l'on applique successivement la fonction fonction (à deux paramètres) sur la valeur précédente avec l'élément suivant de la liste liste (non vide).
Exemple :
def concat(a, b):
return a + " " + b
>>> reduire_liste(concat, ["bonjour", 'les', 'NSI'])
'bonjour les NSI'
def reduire_liste(fonction, liste):
retour = liste[0]
for i in range(1, len(liste))
retour = fonction(retour, liste[i])
return retour
Exercice 4
En utilisant les lambda fonctions :
- Créer une fonction
superieur_a_0renvoyantTruesi l'unique parametre d'entrée en positif etFalsesinon. - Créer une fonction
differencerenvoyant la différence entre le premier et le deuxième paramètre. - Créer une fonction
milieurenvoyant la valeur au milieu du premier et du deuxième paramètre. - Créer une fonction
initialerenvoyant les initiales (premières lettres) du premier et du deuxième paramètre séparées par un point.
superieur_a_0 = lambda x : x >= 0
difference = lambda x, y : y - x
milieu = lambda x, y : (x + y) / 2
initiale = lambda chaine : chaine[0]
Exercice 5
Refaire les exercices 1, 2 et 3 en utilisant filter, map et reduce et les lambda fonctions.
# Ex 1
filter(lambda chaine : chaine[0] == a, ['allemand', 'anglais', 'francais'])
filter(lambda chaine : "roi" in chaine, ['roi des francs', 'roi du Maroc', 'prince de Galles'])
# Ex 2
map(lambda x : -x, [1, 2, 3, 4, -5])
# Ex 3
reduce(lambda x, y : x + y, ["bonjour", 'les', 'NSI'])