Top 3 des fonctionnalités Python que vous ne connaissiez pas (probablement)

Bonjour, Habr! Je vous présente la traduction de l'article «Top 3 des fonctions Python que vous ne connaissez pas (probablement)» de Dario Radečić.

Étant l'une des langues les plus populaires du 21e siècle, Python possède certainement de nombreuses fonctionnalités intéressantes qui méritent d'être explorées en détail. Trois d'entre eux seront examinés aujourd'hui, chacun théoriquement, puis avec des exemples pratiques.

image

La principale raison pour laquelle je veux parler de ces fonctions est qu'elles aident à éviter d'écrire des boucles . Les cycles peuvent être coûteux dans certains cas, et en outre, ces fonctionnalités aideront à augmenter la vitesse.

Voici les fonctions qui seront discutées dans l'article:

1. map ()
2. filter ()
3. Reduce ()

Même si vous avez déjà entendu parler de ces fonctions, il n'y a rien de mal à renforcer vos connaissances avec un peu plus de théorie et d'exemples.

Alors, sans plus tarder ... Commençons!

map ()


La fonction map () prend en paramètre une autre fonction avec un tableau. L'idée est d'appliquer une fonction (passée en argument) à chaque élément du tableau.

Cela est utile pour deux raisons:

  1. Vous n'avez pas besoin d'écrire une boucle
  2. C'est plus rapide qu'une boucle

Voyons cela en action. Je déclarerai une fonction «num_func ()» qui prend un seul nombre comme paramètre. Ce nombre est au carré, divisible par 2 et renvoyé comme tel. Notez que les opérations ont été choisies arbitrairement, vous pouvez faire n'importe quoi à l'intérieur de la fonction:

image

Maintenant, déclarons un tableau de nombres auquel nous voulons appliquer «num_func ()». Notez que «map ()» lui-même renverra l'objet d'affichage , vous devez donc le convertir en liste:

image

il semble que le processus s'est terminé avec succès. Il n'y a rien de révolutionnaire ici, mais ce serait bien d'éviter les cycles autant que possible.

filtre ()


Voici une autre fonctionnalité décente qui vous fera gagner du temps - à la fois en écriture et en exécution. Comme son nom l'indique, l'idée est de ne stocker dans le tableau que les éléments qui remplissent une certaine condition .

Comme dans le cas de «map ()», nous pouvons déclarer une fonction à l'avance, puis la transmettre à «filter ()» avec un objet itérable (par exemple, une liste).

Voyons cela en action. Je suis allé plus loin et j'ai déclaré une fonction "more_than_15 ()", qui, comme son nom l'indique, renvoie "true" si l'élément spécifié en tant que paramètre est supérieur à 15:

image

Ensuite, nous déclarons un tableau de nombres et les passons comme deuxième paramètre à la fonction " filtre () ":

image

Comme prévu, seules trois valeurs remplissent cette condition. Encore une fois, rien de révolutionnaire ici, mais ça a l'air bien mieux que le cycle.

réduire ()


Maintenant "réduire ()". Il est légèrement différent des deux précédents. Nous devons d'abord l'importer depuis le module functools. L'idée principale est qu'elle appliquera cette fonction à un tableau d'éléments et, par conséquent, renverra une seule valeur .

La dernière partie est cruciale - «Reduce ()» ne renvoie pas un tableau d'éléments, il renvoie toujours une seule valeur. Jetons un œil au schéma pour concrétiser ce concept:

image

Voici la logique écrite au cas où le schéma ne serait pas clair à 100%:

  1. 5 ajoutés à 10, résultats en 15
  2. 15 ajoutés à 12, résultats en 27
  3. 27 s'ajoute à 18, le résultat est 45
  4. 45 est ajouté à 25, le résultat est 70

Et 70 est la valeur qui revient. Pour commencer avec l'implémentation du code, importons la fonction de réduction du module functools et déclarons une fonction qui retourne la somme de deux nombres :

image

Maintenant, nous pouvons revenir au diagramme dans le code et nous assurer que tout fonctionne comme il se doit:

image

Jusqu'à ce que vous passiez à la section commentaires, je sais parfaitement qu'il existe d'autres façons de résumer les éléments de la liste. Il s'agit de l'exemple le plus simple pour démontrer le fonctionnement d'une fonction.

Avant que tu partes:


J'espère que vous pourrez en quelque sorte utiliser ces trois fonctions dans votre vie quotidienne. L'augmentation de la vitesse peut ne pas être importante - elle dépend de la quantité de données avec lesquelles vous travaillez - mais le code sera plus beau avec moins de boucles.

Si vous avez d'autres exemples, n'hésitez pas à les partager dans la section commentaires.

Merci d'avoir lu.

All Articles