En Python, les méthodes « any() » et « all() » peuvent être considérées comme des opérateurs logiques. La méthode « any() » correspond au « ou » et la méthode « all() » correspond au « et ». Ce sont des méthodes très intéressantes pour contrôler qu’une liste contient ou non un élément particulier. Elles sont utiles également dans la data science.
Le tableau ci-après apporte une idée plus concrète du fonctionnement de ces méthodes :
La méthode « any() » est vraie si l’élément recherché est présent au moins une fois dans un itérable.
La méthode « all() » est vraie si tous les éléments de l’itérable sont égaux à l’élément recherché.
La méthode « any() » :
Voyons dans l’exemple suivant une utilisation de la méthode « any() ».
On a dans cet exemple un dictionnaire qui contient des données sur des étudiants : le prénom de l’étudiant et le groupe auquel il appartient.
On souhaite créer une fonction qui retourne « True » ou « False » selon la présence de « grp01 » dans le dictionnaire.
On crée une fonction qui s’appelle « control_presence_group » qui prend en paramètre un dictionnaire et la valeur à rechercher.
Dans la partie de code : « set(dico[i][1] for i in dico) » on récupère tous les groupes dans un set. Les valeurs à l’intérieur du set seront donc uniques.
Puis dans le code « any(i == values for i in set(… » on test pour chaque élément du set si l’élément est égal à « values ».
Dès que la fonction détecte qu’un élément est présent dans le set, la fonction s’arrête et retourne « True ». L'itérable peut ne pas être entièrement utilisé. Ce qui présente un gain de performance.
Dans cet exemple, la fonction retourne « True ».
Voici ci-après quel est le code derrière la méthode « any() » :
On constate que si l’élément est présent dans l’itérable, la fonction retourne immédiatement « True ». Si l’élément n’est pas dans l’itérable, elle retourne « False ».
La méthode « all() » :
Voyons dans l’exemple suivant une utilisation de la méthode « all() ».
On a dans cet exemple le même dictionnaire que dans l’exemple précédent. Il contient des données sur des étudiants : le prénom de l’étudiant et le groupe auquel il appartient.
On souhaite créer une fonction qui retourne « True » ou « False » selon si le dictionnaire contient bien uniquement « grp01 » ou « grp02 » ou « grp03 » parmi les groupes existants. S’il existe une autre valeur existante, alors la fonction doit retourner « False ».
On crée une fonction qui s’appelle « control_group » qui prend en paramètre un dictionnaire.
Dans la partie de code : « set(dico[i][1] for i in dico) » on récupère tous les groupes dans un set. Les valeurs à l’intérieur du set seront donc uniques.
Puis dans le code « all(i in ["grp01", "grp02", "grp03"] for i in set (… » on test pour chaque élément du set si l’élément égal à « grp01 » ou « grp02 » ou « grp03 ».
Dès que la fonction détecte qu’un élément du set n’est pas égal à « grp01 » ou « grp02 » ou « grp03 » la fonction s’arrête et retourne « False ». Il faut que tous les éléments du set soient égaux à l’une des valeurs précédemment citées pour que la fonction retourne « True ».
De même qu’avec la méthode « any() », l'itérable peut ne pas être entièrement utilisé. Ce qui présente aussi ici un gain de performance.
Dans cet exemple, la fonction retourne « True ».
Voici ci-après quel est le code derrière la méthode « all() » :
Pour chaque élément de l’itérable, si l’élément ne correspond pas à ce qui est recherché, la fonction retourne immédiatement « False ». Sinon la fonction retourne « True ».
Si vous avez besoin de plus de détails, n'hésitez pas à nous contacter ou consulter nos formations.
Vous trouverez également parmi nos posts d'autres articles comme celui-ci qui peuvent vous intéresser.
Comments