Files
2026-01-14 10:21:12 +01:00

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]