• Aucun résultat trouvé

Python Expressions Lambda

N/A
N/A
Protected

Academic year: 2022

Partager "Python Expressions Lambda"

Copied!
7
0
0

Texte intégral

(1)

Python

Expressions Lambda

Nicolas Delestre

(2)

D´ efinition

Une expression lambda est une fonction anonyme avec une seule instruction qui est une unique expression

Non utilisation du mot cl´ e return, la valeur de l’expression est la valeur retourn´ ee Elle est utilis´ ee comme :

valeur par d´ efaut d’un param` etre formel param` etre effectif

exceptionnellement comme valeur d’une affectation

Elle ´ evite de cr´ eer des fonctions ` a usage unique

(3)

Syntaxe

lambda

[param1, param2, ...] : expression

Equivalence ´

foo =

lambda

parametres : expression

est ´ equivalent ` a

def

foo(parametres):

return

expression

(4)

Exemple 1 : ordre de tri

def trier(l, doivent_etre_echanges=lambda x, y: x > y):

est_trie = False while not est_trie:

est_trie = True

for i in range(len(l)-1):

if doivent_etre_echanges(l[i], l[i+1]):

l[i], l[i+1] = l[i+1], l[i]

est_trie = False

>>> l=[3,2,8,1,5,98,3]

>>> trier(l)

>>> l

>>> [1, 2, 3, 3, 5, 8, 98]

>>> trier(l,lambda x,y : x < y)

>>> l

(5)

Exemple 2 : g´ en´ eralisation du tri 1 / 2

def trier(l,

doivent_etre_echanges=lambda x, y: x > y, valeur_a_comparer=lambda x: x):

est_trie = False while not est_trie:

est_trie = True

for i in range(len(l)-1):

if doivent_etre_echanges(valeur_a_comparer(l[i]), valeur_a_comparer(l[i+1])):

l[i], l[i+1] = l[i+1], l[i]

est_trie = False

(6)

Exemple 2 : g´ en´ eralisation du tri 2 / 2

>>> l=[complex(3,1), complex(1,3), complex(2,2)]

>>> trier(l)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "<stdin>", line 8, in trier File "<stdin>", line 2, in <lambda>

TypeError: ’>’ not supported between instances of ’complex’ and ’complex’

>>> trier(l, valeur_a_comparer=lambda z:z.real)

>>> l

[(1+3j), (2+2j), (3+1j)]

>>> trier(l, valeur_a_comparer=lambda z:z.imag)

>>> l

[(3+1j), (2+2j), (1+3j)]

>>> from math import sqrt

>>> trier(l, valeur_a_comparer=lambda z:sqrt(z.real**2+z.imag**2))

>>> l

(7)

Conclusion

Les expressions lambda :

sont des fonctions anonymes tr` es simples sont issues de la programmation fonctionnelle permettent de g´ en´ eraliser des algorithmes

permettent d’´ eviter de cr´ eer des fonctions peu utiles

Références

Documents relatifs

– Ajouter la bibliothèque à l’installation Python de base – Ce n’est qu’après l’avoir installé, qu’on peut l’utiliser. • Installation d’une

Casio : menu PRGM s´electionner le programme SUITE puis F1 pour EXE Faire plusieurs essais N=3, N=10 et N=25. 5 V´ erification

Monnaie ´electronique sans contact vendeur/banque (solution de l’exo) On reprend ce qui pr ´ec `ede avec comme donn ´ees publiques fournies par la banque ´emettrice : un entier RSA

Construire sur un seul graphique les nuages de points de l’indice de Qu´ etelet en fonction de la taille, en fonction du poids, pour chaque sexe8. Repr´ esenter, sur un seul

Expliquer pourquoi cette fonction ne convient pas et proposer une modification qui permette d’obtenir la fonction voulue.

Cependant, cette fonction ne convient pas car, dans la boucle for, lors du calcul de v, on a besoin de la valeur de u telle qu’elle était à l’entrée de la boucle. Or, cette valeur

(b) Écrire une fonction distance_recif(d,angle1,angle2) qui calcule et ren- voie la distance entre la trajectoire à partir des deux angles mesurés (exprimés en degrés) et de la

Dans l’activité 1, nous avons vu qu’il était possible de créer une application (pour smartphone par exemple) permettant de calculer le prix final d’un article à partir d’un