Semaine 4, jour 2
This commit is contained in:
136
Semaine_04/Jour_02.md
Normal file
136
Semaine_04/Jour_02.md
Normal file
@@ -0,0 +1,136 @@
|
||||
## 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]
|
||||
```
|
||||
Reference in New Issue
Block a user