[Apprendre python à partir de zéro] 30. Compréhension approfondie des fonctions récursives et des fonctions anonymes

fonction récursive

1. Qu'est-ce qu'une fonction récursive

Grâce à l'étude précédente, nous savons qu'une fonction peut appeler d'autres fonctions.

Si une fonction n'appelle pas d'autres fonctions en interne, mais elle-même, cette fonction est une fonction récursive.

2. Le rôle des fonctions récursives

A titre d'exemple, calculons la factorielle n! = 1 * 2 * 3 * ... * n

Solution 1 : Utilisez une boucle pour le faire

def cal(num):
    result,i = 1,1
    while i <= num:
        result *= i
        i+= 1
    return result

print(cal(3))

Regardez la loi de la factorielle
1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!

n! = n × (n-1) !

Solution 2 : Utilisez la récursivité pour atteindre

def factorial(num):
    result = 1
    if num == 1:
        return 1
    result = num * factorial(num -1)
    return result

print(factorial(3))

principe

insérez la description de l'image ici

Exercice : Implémenter la suite de Fibonacci en utilisant la récursivité. 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

fonction anonyme

De petites fonctions anonymes peuvent être créées à l'aide du mot-clé lambda. Ces fonctions tirent leur nom de l'omission de l'étape standard de déclaration des fonctions avec def.

La syntaxe d'une fonction lambda se compose d'une seule instruction, comme suit :

lambda 参数列表: 运算表达式

Les exemples sont les suivants :

sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

La sortie de l'exemple ci-dessus :

Value of total :  30
Value of total :  40

Les fonctions Lambda peuvent accepter n'importe quel nombre de paramètres mais ne peuvent renvoyer que la valeur d'une expression

Les fonctions anonymes peuvent exécuter des expressions arbitraires (même des fonctions d'impression), mais on pense généralement que les expressions doivent avoir un résultat de calcul pour le retour.

Python peut utiliser lambda lors de l'écriture de certains scripts d'exécution, qui peuvent accepter le processus de définition de fonctions, comme l'écriture d'un simple serveur de gestion de scripts.

Applications

fonction passée en paramètre

def fun(a, b, opt):
    print("a = " % a)
    print("b = " % b)
    print("result =" % opt(a, b))

add = lambda x,y:x+y
fun(1, 2, add)  # 把 add 作为实参传递

L'exemple de sortie ci-dessus :

a = 1
b = 2
result = 3

pratique

avoir une liste

students = [
    {
    
    'name': 'zhangsan', 'age': 18, 'score': 92},
    {
    
    'name': 'lisi', 'age': 20, 'score': 90},
    {
    
    'name': 'wangwu', 'age': 19, 'score': 95},
    {
    
    'name': 'jerry', 'age': 21, 'score': 98},
    {
    
    'name': 'chris', 'age': 17, 'score': 100},
]

Il est nécessaire de trier les données de la liste ci-dessus par ordre croissant selon le score.

Fonctions et classes intégrées dans Python qui prennent des fonctions comme arguments :

nom de la fonction ou de la classe Fonction Paramètre Description
fonction triée Utilisé pour trier une liste non ordonnée La valeur de retour du paramètre de fonction spécifie par quel attribut de l'élément trier
classe de filtre Utilisé pour filtrer tous les éléments d'une liste qui répondent aux exigences, et le résultat est un itérateur La valeur de retour du paramètre de fonction spécifie la condition de filtre que l'élément satisfait
classe de carte Effectuez la même opération sur chaque élément de la liste, et le résultat est un itérateur Le paramètre fonction permet de préciser l'opération à effectuer sur les éléments de la liste
réduire la fonction Effectue une opération de compression sur une séquence pour obtenir une valeur. Après python3, cette méthode a été déplacée vers le module functools Le paramètre de fonction est utilisé pour spécifier de quelle manière les éléments sont fusionnés

Cas avancé

[Python] Python réalise le jeu de devinettes de mots - défiez votre intelligence et votre chance !

[python] La bibliothèque Python tkinter implémente un programme graphique pour le convertisseur d'unité de poids

[python] Utilisez Selenium pour obtenir des entrées (2023 Blog Star)

[python] Utilisez Selenium et Chrome WebDriver pour obtenir des informations sur l'article dans [Tencent Cloud Studio Practical Training Camp]

Utilisez le studio Tencent Cloud Cloud pour réaliser la planification Baidu AI pour réaliser la reconnaissance de texte

[Amusez-vous avec la série Python [Xiaobai doit voir] Robot d'exploration multithread Python : téléchargez des images de sites Web de packages d'émoticônes

[Play with Python series] [Must-see for Xiaobai] Utilisez Python pour explorer les données historiques de Shuangseqiu et les analyser visuellement

[Jouez avec la série python] [Incontournable pour Xiaobai] Utilisez la technologie Python crawler pour obtenir une adresse IP proxy et enregistrez-la dans un fichier

[Incontournable pour Xiaobai] Exemple de synthèse d'images Python utilisant la bibliothèque PIL pour réaliser la synthèse de plusieurs images par rangs et colonnes

[Xiaobai doit voir] Le combat réel du crawler Python télécharge des images de déesses par lots et les enregistre localement

[Xiaobai doit voir] Analyse détaillée du générateur de nuage de mots Python et implémentation du code

[Xiaobai doit voir] Python explore un exemple de données de joueurs NBA

[Incontournable pour Xiaobai] Exemple de code pour explorer et enregistrer l'audio de l'Himalaya à l'aide de Python

[Incontournable pour Xiaobai] Réalisation technique de l'utilisation de Python pour télécharger des images de skin League of Legends par lots

[Xiaobai doit voir] Traitement et visualisation des données du crawler Python

[Incontournable pour Xiaobai] Programme de chenilles Python pour obtenir facilement des images de peau de héros de King of Glory

[Incontournable pour Xiaobai] Utilisez Python pour générer un document Word de liste personnalisée

[Incontournable pour Xiaobai] Combat de chenilles Python : obtenez des images du site Web d'Onmyoji et enregistrez-les automatiquement

Xiaobai série incontournable du système de gestion de bibliothèque - exemple de code pour les fonctions de connexion et d'enregistrement

100 cas de combat réel de Xiaobai : un programme complet et simple de jugement gagnant à la loterie Shuangseqiu, adapté au démarrage de Xiaobai

Traitement et visualisation de données géospatiales à l'aide de géopandas et shapely (.shp)

Utiliser le sélénium pour explorer les données de la liste de films Maoyan

Algorithme d'amélioration d'image Principe et mise en œuvre de Retinex Explication détaillée

Guide de démarrage pour les robots d'exploration (8) : écrivez des programmes de robots d'exploration de données météorologiques pour l'analyse visuelle

Guide d'introduction aux robots d'exploration (7): Utilisation de Selenium et de BeautifulSoup pour explorer le film Douban Top250 Exemple d'explication [Reptile Xiaobai doit regarder]

Guide de démarrage des robots d'exploration (6) : Anti-crawlers et compétences avancées : proxy IP, déguisement d'agent utilisateur, vérification de la connexion par contournement des cookies et outils d'identification du code de vérification

Guide d'introduction aux robots d'exploration (5) : robots d'exploration distribués et contrôle de concurrence

Premiers pas avec les robots d'exploration (4) : la meilleure façon d'explorer des pages Web dynamiques à l'aide de Selenium et de l'API

Guide de démarrage des robots d'exploration (3) : requêtes réseau Python et stratégies anti-crawler courantes

Premiers pas avec les robots d'exploration (2) : Comment utiliser les expressions régulières pour l'extraction et le traitement des données

Débuter avec les reptiles (1) : Apprenez les bases et les compétences des reptiles

Application du modèle d'apprentissage en profondeur à la reconnaissance d'images : analyse de la pratique et de la précision des ensembles de données CIFAR-10

Principes de base de la programmation orientée objet Python et exemple de code

Guide d'utilisation de la base de données MySQL : apprenez à utiliser Python pour ajouter, supprimer, modifier et interroger des opérations

Guide d'utilisation des fichiers Python : encodage, lecture, écriture et gestion des exceptions

Utilisez Python et Selenium pour automatiser l'exploration#【Dragon Boat Festival Special Call for Papers】Explorez la technologie ultime, et l'avenir vous appartiendra "Zong" #Articles contribués

Tutoriel Python multi-thread et multi-processus : analyse complète, cas de code et compétences en optimisation

Selenium Automation Toolset - Guide complet et tutoriels

Les bases du robot d'exploration Python sont avancées jusqu'au didacticiel de combat réel

Tutoriel d'introduction à Python : maîtrisez les connaissances de base de la boucle for, de la boucle while, de l'opération sur les chaînes, de la lecture et de l'écriture de fichiers et de la gestion des exceptions

Tutoriel de traitement et d'analyse des données Pandas : des bases au combat réel

Explication détaillée des types de données couramment utilisés et des opérations associées en Python

[Le dernier en 2023] Explication détaillée des six principaux schémas pour améliorer l'indice du modèle de classification

Introduction aux bases de la programmation Python et compétences avancées, développement Web, analyse de données, apprentissage automatique et intelligence artificielle

Résultats de prédiction graphique avec 4 méthodes de régression : régression vectorielle, régression de forêt aléatoire, régression linéaire, régression des K-plus proches voisins

Je suppose que tu aimes

Origine blog.csdn.net/qq_33681891/article/details/132295259
conseillé
Classement