Maison  >  Article  >  développement back-end  >  Tutoriel d'exemple de programmation fonctionnelle Python

Tutoriel d'exemple de programmation fonctionnelle Python

零下一度
零下一度original
2017-06-30 16:08:431188parcourir

La programmation fonctionnelle utilise une série de fonctions pour résoudre des problèmes. Selon la pensée générale de la programmation, face à un problème, notre façon de penser est « comment le faire », tandis que la façon de penser de la programmation fonctionnelle est « qu'est-ce que je veux faire ». faire". Quant aux caractéristiques de la programmation fonctionnelle, nous ne les résumerons pas pour l'instant. Utilisons directement des exemples pour comprendre ce qu'est la programmation fonctionnelle.

Expression lambda (fonction anonyme) :

Comment définir les fonctions ordinaires et les fonctions anonymes :


#Fonction ordinaire def add( a ,b):

   return a + bprint add(2,3) 
#匿名函数add = lambda a,b : a + bprint add(2,3)#========输出===========5
5


Les règles de dénomination des fonctions anonymes sont identifiées par le mot-clé lamdba Le côté gauche des deux points (:) indique les paramètres. reçu par la fonction ( a, b), le côté droit des deux points (:) représente la valeur de retour de la fonction (a+b).

Puisque lamdba n'a pas besoin d'être nommé lors de sa création, on l'appelle une fonction anonyme ^_^

Fonction Map :

Calculer la longueur de la chaîne


abc = ['com','fnng','cnblogs']for i in range(len(abc)):    print len(abc[i])#========输出===========347

Définissez un tableau de chaînes abc, calculez la longueur de abc, puis bouclez pour afficher la longueur de chaque chaîne du tableau.

Voyons comment la fonction map() implémente ce processus.


abc_len = map(len,['hao','fnng','cnblogs'])print abc_len#========输出===========[3, 4, 7]

Bien que les résultats de sortie soient les mêmes, leurs formes sont différentes. La première est une valeur numérique pure et la sortie de la fonction map() est. still Le format du tableau est conservé.

Conversion de casse ;

Python fournit upper() et lower() pour convertir la casse.


#Case conversion ss='bonjour LE MONDE !'
print ss.upper() #Convertir en majuscule print ss.lower() #Convertir en minuscule# = =======Sortie===========BONJOUR LE MONDE ! bonjour tout le monde !


Converti via la fonction map() :


def to_lower(item):    return item.lower()name = map(to_lower,['cOm','FNng','cnBLoGs'])print name#========输出===========['com', 'fnng', 'cnblogs']

Ceci Dans l'exemple, nous pouvons voir que nous avons écrit une fonction toUpper. Cette fonction ne modifie pas la valeur transmise. Elle effectue simplement une opération simple sur la valeur transmise et la renvoie. Ensuite, nous l’utilisons dans la fonction map pour décrire clairement ce que nous voulons faire.

Voyons comment implémenter la conversion de casse de chaîne de manière courante :


abc = ['cOm','FNng','cnBLoGs']lowname = []for i in range(len(abc)):    lowname.append(abc[i].lower())print lowname#========输出===========['hao', 'fnng', 'cnblogs']

fonction map() plus expressions lambda (fonctions anonymes) peuvent réaliser des fonctions plus puissantes.

#Trouver des carrés#0*0,1*1,2*2,3*3,....8*8squares = map(lambda x : x*x ,range(9))imprimer des carrés #========Sortie===========[0, 1, 4, 9, 16, 25, 36, 49, 64]

Fonction de réduction :

def add(a,b):    return a+b

add = reduce(add,[2,3,4])print add#========输出===========9  对于Reduce函数每次是需要对两个数据进行处理的,首选取2 和3 ,通过add函数相加之后得到5,接着拿5和4 ,再由add函数处理,最终得到9 。

Dans l'exemple de fonction map précédent, nous pouvons voir que la fonction map ne traite qu'une seule donnée à la fois.

Ensuite, nous avons découvert à quel point il est simple d'implémenter la factorielle via la fonction Réduire et l'expression lambda :

#5 Factorielle #5 ! =1*2*3*4*5imprimer réduire(lambda x,y: x*y, range(1,6))#========Sortie===========120

En plus de mapper et de réduire, Python dispose également d'autres fonctions auxiliaires telles que filter, find, all et any (également disponibles dans d'autres langages fonctionnels), qui peuvent rendre votre code plus concis et plus facile à utiliser. lire. Regardons un exemple plus complexe :

# Calculez la valeur de l'entier positif dans le tableau number =[2, -5, 9, -7, 2, 5, 4, -1, 0, - 3, 8 ] compte = 0 sum = 0for i in range(len(number)):

if number[i]>0:
        count += 1
        sum += number[i]print sum,countif count>0:
    average = sum/countprint average

#========Output===========30 6 5

Si vous utilisez la programmation fonctionnelle, cet exemple peut s'écrire comme ceci :

number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]

sum = filter(lambda x: x>0, number)

average = reduce(lambda x,y: x+y, sum)/len(sum)print average

#========Output========== =5

Finalement on peut voir que la programmation fonctionnelle présente les avantages suivants :

1) Le code est plus simple.
2) Les ensembles de données, les opérations et les valeurs de retour sont tous rassemblés.
3) Lorsque vous lisez le code, il n'y a pas de corps de boucle, vous pouvez donc enregistrer certaines variables temporaires et la logique des variables qui vont et viennent.
4) Votre code décrit ce que vous voulez faire, plutôt que comment le faire.


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!

Déclaration:
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