Files
live-campus-mcs-p-2027.2/Semaine_04/Jour_02.md
2026-01-14 10:21:12 +01:00

136 lines
2.2 KiB
Markdown

## 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
```py
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`
```py
def generator():
for i in range(10):
return i
```
Renverra [0], `return` étant un arrêt.
Alors que :
```py
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 :
```py
def square_generator(n):
for i in range(n):
yield i ** 2
```
Renverra `<function square_generator at 0x000001351A12E3E0>`. Maintenant, on utilise :
```py
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
```py
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 :
```py
print("La lettre " + variable_str + " apparaît " + variable_int + " fois.")
```
Se remplace bien par :
```py
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 :
```py
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 :
```py
liste = [i for i in range(5)]
print(liste) # [0, 1, 2, 3, 4]
```
Et même inclure des conditions :
```py
liste = [i for i in range(5) if i % 2 == 0]
print(liste) # [0, 2, 4]
```