Maison > développement back-end > Tutoriel Python > Une brève discussion sur l'utilisation de la fonction Lambda en Python

Une brève discussion sur l'utilisation de la fonction Lambda en Python

WBOY
Libérer: 2023-04-12 12:55:02
avant
1450 Les gens l'ont consulté

Une brève discussion sur l'utilisation de la fonction Lambda en Python

Aujourd'hui, j'aimerais recommander une fonction intégrée super facile à utiliser en Python, qui est la méthode lambda. Ce tutoriel partagera avec vous en gros :

  • Qu'est-ce que la fonction lambda
  • La fonction lambda. filtre les éléments de la liste
  • lambda La combinaison de la fonction et de la méthode map()
  • La combinaison de la fonction lambda et de la méthode apply()
  • Quand ne convient-il pas d'utiliser la méthode lambda

Qu'est-ce que la fonction Lambda

En Python, nous utilisez souvent le mot-clé lambda pour déclarer une fonction anonyme. La fonction dite anonyme est, en termes simples, une fonction sans nom. Le format de syntaxe spécifique est le suivant :

lambda arguments : expression
Copier après la connexion

Elle peut accepter n'importe quel nombre de paramètres, mais uniquement. autorise une expression, et le résultat de l'expression est la valeur de retour de la fonction. Nous pouvons simplement écrire un exemple :

(lambda x:x**2)(5)
Copier après la connexion

sortie :

25
Copier après la connexion
Copier après la connexion

Filtrer les éléments de la liste

Alors, comment filtrer les éléments dans la liste ? Ici, vous devez combiner la fonction lambda et la méthode filter(), ainsi que le format syntaxique de la méthode filter() :

filter(function, iterable)
Copier après la connexion
  • function -- fonction de jugement
  • iterable -- objet, liste ou dictionnaire itérable

Parmi eux, nous avons une telle liste :

import numpy as np
yourlist = list(np.arange(2,50,3))
Copier après la connexion

Parmi eux, nous voulons filtrer les éléments qui sont inférieurs à 100 après la puissance 2. Définissons une fonction anonyme, comme suit :

lambda x:x**2<100
Copier après la connexion

Le résultat final est le suivant :

list(filter(lambda x:x**2<100, yourlist))
Copier après la connexion

sortie :

[2, 5, 8]
Copier après la connexion

Si vous rencontrez un processus de calcul complexe, l'éditeur vous recommande ici de personnaliser une fonction vous-même, mais s'il s'agit d'un processus de calcul simple, la fonction anonyme lambda est certainement le meilleur choix.

Utilisation combinée avec la fonction map()

La syntaxe de la fonction map() est similaire à la fonction filter() ci-dessus, comme la fonction anonyme suivante :

lambda x: x**2+x**3
Copier après la connexion

Nous l'utilisons avec la méthode map() :

list(map(lambda x: x**2+x**3, yourlist))
Copier après la connexion

sortie :

[12,
 150,
 576,
 1452,
 2940,
 5202,
 ......]
Copier après la connexion

Bien sûr, comme nous l'avons mentionné précédemment, la fonction anonyme lambda peut accepter plusieurs nombres de paramètres. Nous pouvons l'essayer ici. Par exemple, il existe deux ensembles de listes,

mylist = list(np.arange(4,52,3))
yourlist = list(np.arange(2,50,3))
Copier après la connexion

Nous utilisons également le. map(). Fonctionnement, le code est le suivant :

list(map(lambda x,y: x**2+y**2, yourlist,mylist))
Copier après la connexion

output : combinaison de la méthode

[20,
 74,
 164,
 290,
 452,
 650,
 884,
 1154,
......]
Copier après la connexion

et apply(). La méthode

apply() est davantage utilisée dans les tables de données Pandas, et l'anonymat lambda est introduit dans l'application. (), nous créons une nouvelle table de données, comme indiqué ci-dessous :

myseries = pd.Series(mylist)
myseries
Copier après la connexion

sortie :

04
17
2 10
3 13
4 16
5 19
6 22
7 25
8 28
......
dtype: int32
Copier après la connexion

L'utilisation de la méthode apply() est légèrement différente des deux précédentes pour la méthode map() et le filtre. (), nous devons convertir l'objet itérable. Mettez-le dedans, et apply() ici n'a pas besoin de :

myseries.apply(lambda x: (x+5)/x**2)
Copier après la connexion

sortie :

0 0.562500
1 0.244898
2 0.150000
3 0.106509
4 0.082031
5 0.066482
6 0.055785
7 0.048000
......
dtype: float64
Copier après la connexion

Et lorsque vous rencontrez des données de la table DataFarme, la même opération est effectuée

df = pd.read_csv(r'Dummy_Sales_Data_v1.csv')
df["Sales_Manager"] = df["Sales_Manager"].apply(lambda x: x.upper())
df["Sales_Manager"].head()
Copier après la connexion

sortie :

0PABLO
1PABLO
2KRISTEN
3ABDUL
4 STELLA
Name: Sales_Manager, dtype: object
Copier après la connexion

et via la méthode apply() Le traitement est plus rapide que d'utiliser directement la méthode str.upper() ! !

Scénarios qui ne conviennent pas à l'utilisation

Alors quels sont les scénarios qui ne conviennent pas à l'utilisation ? Alors tout d'abord, la fonction lambda est une fonction anonyme et ne convient pas pour l'attribuer à une variable. Par exemple, dans le cas suivant :

squared_sum = lambda x,y: x**2 + y**2
squared_sum(3,4)
Copier après la connexion

En comparaison, il vaut mieux personnaliser une fonction pour le traitement :

def squared_sum(x,y):
return x**2 + y**2

squared_sum(3,4)
Copier après la connexion

. sortie :

25
Copier après la connexion
Copier après la connexion

Lorsque nous rencontrons la situation suivante, nous pouvons simplifier légèrement le code :

import math
mylist = [10, 25, 40, 49, 65, 81]
sqrt_list = list(map(lambda x: math.sqrt(x), mylist))
sqrt_list
Copier après la connexion

sortie :

[3.16227766, 5.0, 6.324555320, 7.0, 8.062257748, 9.0]
Copier après la connexion

Nous pouvons le simplifier en :

import math
mylist = [10, 25, 40, 49, 65, 81]
sqrt_list = list(map(math.sqrt, mylist))
sqrt_list
Copier après la connexion

sortie :

[3.162277, 5.0, 6.324555, 7.0, 8.062257, 9.0]
Copier après la connexion

S'il s'agit d'une fonction intégrée dans Python, en particulier C'est un module utilisé pour l'arithmétique comme les mathématiques. Il n'a pas besoin d'être placé dans la fonction lambda et peut être directement extrait et utilisé

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal