top of page

FONCTIONS USUELLES

Dans cette fiche, vous trouverez un tas de fonctions qui peuvent être utiles pour un programmeur Python.

Tout d'abord, commençons par des fonctions permettant de gérer l'aléatoire

Dans le module random, on trouve plusieurs fonctions très utiles : random, randint, seed, choice et sample.

from random import random, randint, seed, choice, sample

random() # Renvoie une valeur aléatoire entre 0 (inclu) et 1 (exclu)

randint(nombre1, nombre2) # Renvoie un entier aléatoire entre nombre1 (inclu) et nombre2 (inclu)

Il est parfois utiliser pour déboguer son programme que random ou randint renvoie toujours la même valeur. Pour cela, on utilise (le temps du débogage) la fonction seed.

seed(42) # Pour que Python renvoie toujours le même nombre aléatoire. 42 peut bien sûr être remplacé par n'importe quel nombre.

Enfin, pour en finir avec l'aléatoire, voici deux fonctions très utiles pour tirer aléatoirement un ou plusieurs éléments d'une liste.

 

Tout d'abord la fonction choice permet de renvoyer un élément pioché au hasard dans une liste.

choice(liste) # Renvoie un élément pris au hasard dans la liste

La fonction sample permet de renvoyer plusieurs éléments piochés au hasard dans une liste.

sample(liste, 10) # Renvoie une liste de 10 éléments pris au hasard dans la liste

Un peu d'arithmétique maintenant avec les opérateurs / (division décimale), // (division entière) et % (modulo). Ils permettent d'obtenir les différents résultats d'une division (quotient et reste).

42 / 5 # Renvoie 8.4, c'est à dire le quotient de la division décimale de 42 par 5

42 // 5 # Renvoie 8, c'est à dire le quotient de la division entière de 42 par 5

42 % 5 # Renvoie 2, c'est à dire le reste de la division entière de 42 par 5

Voyons quelques fonctions mathématiques :

sum(liste) # Renvoie la somme de toutes les éléments d'une liste

liste.count(1) # Renvoie de 1 dans la liste

max(liste) # Renvoie la valeur maximale d'une liste

min(liste) # Renvoie la valeur minimale d'une liste

abs(x) # Renvoie la valeur absolue de x

round(x) # Renvoie l'entier le plus proche de x

round(x, n) # Renvoie l’arrondi de x avec n décimales

Quelques fonctions du module math :

floor(x) # Renvoie la valeur entière de x

exp(x) # Renvoie l'exponentiel de x

sqrt(x) # Renvoie la racine carré de x

cos(x) # Renvoie le cosinus de x

sin(x) # Renvoie le sinus de x

pi(x) # Renvoie la valeur exacte de pi

Quelques fonctions du module statistics :

mean(liste) # Renvoie la moyenne des éléments d'une liste

variance(liste) # Renvoie la variance des éléments d'une liste

quantiles(liste, n=10) # Renvoie une liste contenant tous les déciles des éléments de la liste

Les fonctions type et isinstance sont utiles pour obtenir et tester le type d'une variable.

La fonction type permet de renvoyer le type d'une variable.

chaine = 'abc'

type(chaine) # Renvoie <class 'str'>, c'est-à-dire le type chaîne de caractère.

La fonction instance renvoie quant à elle un booléen selon si la variable appartient ou non au type testé. Elle prend deux paramètres : la variable et le type à tester.

entier= 38

isinstance(entier, int) # Renvoie True car la variable entier est bien de type int

La fonction split divise une chaîne de caractères en pleins de sous-chaînes selon un caractère passé en paramètre. Par défaut, le caractère qui permet de diviser la chaîne est l'espace. Donc si on ne précise aucun paramètre, la fonction split renverra chaque mot (délimité par un espace) d'une chaîne de caractères.

chaine = 'Apprenez Python avec le site STID révision'

chaine.split() # Renvoie la liste ['Apprenez','Python','avec','le','site','STID','révision']

Cette fonction peut être utile pour manipuler les mots d'un texte.

Pour trier une liste, on utilise la fonction sorted.

sorted(liste) # Renvoie la liste triée par ordre décroissant

sorted(liste, reverse=True) # Renvoie la liste triée par ordre décroissant

Une fonction très utile pour le débogage est la fonction assert qui permet de détecter des cas d'erreurs. On indique une condition (qui renvoie donc un booléen). Si le booléen renvoyé par la condition est True alors l'exécution continue sinon le programme s'arrête et un message s'affiche. 

La syntaxe est la suivante :

assert condition, 'message à afficher' # Le message est un paramètre facultatif. S'il n'est pas précisé alors si la condition n'est pas vérifié, le message sera AssertionError

Exemple :

liste = [1,2,3]

assert 4 in liste, '4 not in liste' # Ici, 4 n'est pas dans la liste. La valeur du booléen est donc False. Le message 'AssertionError: not in liste' va dont s'affiche dans les message d'erreurs du terminal.

La fonction replace permet de remplacer des caractères ou des sous-chaînes de caractères dans une chaîne de caractères. Ses paramètres sont l'ancienne sous-chaîne de caractères et la nouvelle.

chaine = 'abc'

nouvelle_chaine = chaine.replace('a','b') # La nouvelle chaîne est 'bbc'

Attention, il faut mettre le résultat de cette fonction dans une variable. En effet, la fonction replace ne modifie pas la chaîne, elle se contente de renvoyer la chaîne modifiée. 

chaine = 'abc'

chaine.replace('a','b')

print(chaine) # Affiche 'abc' c'est-à-dire l'ancienne chaîne

On peut aussi rajouter un paramètre (facultatif) qui indique le nombre de remplacement à effectuer.

chaine = '11111'

nouvelle_chaine = chaine.replace('1','0',2) # La nouvelle chaîne est '00111'

La fonction shape permet d'obtenir les dimensions d'un tableau (liste de listes) en renvoyant le tuple (nombre de lignes, nombre de colonnes). 

tableau.shape() # Renvoie (nombre de lignes, nombre de colonnes)

tableau.shape[0] # Renvoie le nombre de lignes du tableau

tableau.shape[1] # Renvoie le nombre de colonnes du tableau

La fonction len renvoie la longueur d'un itérable. Pour les listes, elle renverra le nombre d'éléments et pour les chaînes de caractères, elle renverra le nombre de caractères.

len(liste) # Renvoie le nombre d'éléments de la liste

len(chaine) # Renvoie le nombre de caractères de la chaîne

On peut faire la concaténation de chaîne de caractères présentes dans un tuple ou une liste avec la fonction join. Elle prend en paramètre un itérable qui contient des chaînes de caractères. On lui indique aussi le caractère qui sera inséré entre chaque chaîne à concaténer.

' '.join(['fiches','de','révision']) # Renvoie la chaîne 'fiches de révision' qui est la concaténation des chaînes de la liste séparée par un espace.

'2'.join(('1','0','1','0','1','0','1')) # Renvoie la chaîne '1202120212021' qui est la concaténation des chaînes du tuple séparée par un 2. 

Enfin le module itertools est un module qui contient de nombreuses fonctions permettant de manipuler des itérables. Ces fonctions peuvent être très utiles pour la manipulation de données. En effet, en Data Science, on manipule souvent des listes ou bien des listes de listes (tableau de données) qui sont tous deux des itérables. Je vais donc vous présenter deux fonctions du module itertools :  islice et combinations ainsi qu'une fonction du module more_itertools : la fonction last.

Tout d'abords, voyons la la fonction islice. Elle permet d'obtenir tous les éléments d'un itérable présent entre deux indices selon un pas définie en paramètre. Elle admet donc 4 paramètres : l'itérable, l'indice de début, l'indice de fin et le pas.

La fonction islice ne renvoie rien. La ligne suivante ne marche donc pas :

liste_filtre = islice(itérable, début, fin, pas)

Je vous conseille, si vous voulez obtenir la liste obtenue après application de la fonction islice de la créer avec par exemple une compréhension de liste.

from itertools import islice

liste = [1,2,3,4,5,6,7,8,9]

liste_filtre = [element for element in islice(liste,0,len(liste),2] # liste_filtre contient tous les éléments de la liste compris entre le premier (indice 0) et le dernier (len(liste)) et cela avec un pas de 2. liste_filtre contient donc [1,3,5,7,9].

Islice peut aussi s’utiliser dans une boucle for en utilisant la fonction zip (dont je parle dans le fiche sur la boucle for) : 

from itertools import islice

liste = [1,2,3,4,5,6,7,8]

for element1, element2 in zip(islice(l,0,len(l),2), islice(l,1,len(l),2)): # zip permet d'avancer en même temps sur deux itérables. Le premier islice commence à la première valeur tandis que l'autre commence à la deuxième. Les deux islice avance avec un pas de 2.

    print(element1, element2) # Affiche 1 2 puis 3 4 puis 5 6 et enfin 7 8

La deuxième fonction que je voudrais vous présenter est la fonction combinations. Elle renvoie toutes les combinaisons possibles d'un itérable sous la forme d'un tuple. Elle admet deux paramètres : un itérable (liste ou chaîne de caractères par exemple) et la longueur des tuples (nombre d'éléments de combinaisons).

Elle s'utilise soit directement dans une boucle for, soit en créant une liste avec la fonction list.

from itertools import combinations

liste = [1,2,3]

Avec une boucle for :

for combinaison in combinations(liste, 2): # Toutes les combinaisons possibles de deux éléments

    print(combinaison) # Affiche (1,2) puis (1,3) puis (2,3). Les parenthèses symbolisent un tuple (itérable qui a un peu près les mêmes propriétés qu'une liste).

Création d'une liste :

combinaison = list(combinations(liste, 2)) # Utilisation de la fonction list

 

Enfin, la fonction last renvoie le dernier élément d'un itérable. Elle est présente dans le module more_itertools.

from more_itertools import last

liste, chaine = [1,2,3], 'fiche'

print(last(liste),last(chaine)) # Affiche 3 et 'e'

bottom of page