2.2 KiB
2.2 KiB
Fonctions LAMBDA
Méthodes et fonctions avancées
Données déstructurées
dc_infos = ("Dale", "Cooper", "32") dc_prenom = dc_infos[0] dc_nom = dc_infos[1] dc_age = dc_infos[2]
dc_prenom, dc_nom, dc_age = dc_infos
Surcharge de méthode
range(10) # [0,1,2,3,4,5,6,7,8,9]
range(2, 10) # [2,3,4,5,6,7,8,9]
range(2, 10, 2) # [2,4,6,8]
A la place de return => yield
def generator():
for i in range(10):
return i
Renverra [0], return étant un arrêt.
Alors que :
def generator():
for i in range(10):
yield i
Va renvoyer : <function generator at 0x000002584950E340>
Générateurs
La fonction next permet d'économiser des ressources en mettant en mémoire la fonction et sa position. Par exemple :
def square_generator(n):
for i in range(n):
yield i ** 2
Renverra <function square_generator at 0x000001351A12E3E0>. Maintenant, on utilise :
squares = square_generator(10)
print(next(squares))
print(next(squares))
print(next(squares))
print(next(squares))
print(next(squares))
print(next(squares))
print(next(squares))
print(next(squares))
Renverra :
0
1
4
9
16
25
36
49
Return, Yield et Continue
for square in generator:
if square > 50: # Si le carré est supérieur à 50, la boucle cesse
break
if square % 2 == 0: # Si le carré est pair, on le zappe
continue
print(square)
Format String
Le classique :
print("La lettre " + variable_str + " apparaît " + variable_int + " fois.")
Se remplace bien par :
print(f"La lettre {variable_str} apparaît {variable_int} fois.")
Le %s c'est un peu démodé face au f-string, franchement.
Listes de compréhension
Pour peupler une liste avec des formules, on peut faire du standard :
liste = []
for i in range(5)
liste.append(i)
print(liste) # [0, 1, 2, 3, 4]
Ou, une liste compréhensive, contenant l'algo de base amenant le résultat :
liste = [i for i in range(5)]
print(liste) # [0, 1, 2, 3, 4]
Et même inclure des conditions :
liste = [i for i in range(5) if i % 2 == 0]
print(liste) # [0, 2, 4]