Table des matières
Créer une séquence numérique simple avec le rendement
Le rendement implémente un générateur de séquence infini
Le rendement gère les mégadonnées ou la lecture de fichiers
Quelques conseils: où le rendement est facile à ignorer lors de l'utilisation
Maison développement back-end Tutoriel Python Génération de séquences avec un mot-clé Python Rende

Génération de séquences avec un mot-clé Python Rende

Jul 16, 2025 am 04:50 AM
php java programmation

Le mot-clé de rendement est utilisé pour créer des générateurs, générer des valeurs à la demande et enregistrer la mémoire. 1. Remplacer le retour pour générer des séquences finies, telles que les séquences de Fibonacci; 2. Implémentez des séquences infinies, telles que les séquences naturelles; 3. Profiter les big data ou les lectures de fichiers et les traiter ligne par ligne pour éviter le débordement de la mémoire; 4. Notez que le générateur ne peut traverser qu'une seule fois et peut être appelé par suivant () ou pour la boucle.

Génération de séquences avec un mot-clé Python Rende

Si vous voulez savoir comment utiliser le mot clé yield de Python pour générer des séquences, sa plus grande fonction est de vous aider à créer un générateur pour générer des valeurs si nécessaire en cas de besoin, plutôt que de stocker toutes les données en mémoire à la fois.

Génération de séquences avec un mot-clé Python Rende

Ceci est particulièrement utile pour traiter de grandes quantités de données ou de séquences infinies.

Jetons un coup d'œil à plusieurs scénarios d'utilisation courants et méthodes d'écriture.

Génération de séquences avec un mot-clé Python Rende

Créer une séquence numérique simple avec le rendement

Le moyen le plus courant est return une séquence à la place. La différence est que lorsqu'une fonction rencontre yield , elle interrompra l'exécution et conservera l'état actuel, puis continuera à exécuter après l'appel suivant.

Par exemple, vous souhaitez écrire une fonction qui génère une séquence Fibonacci:

Génération de séquences avec un mot-clé Python Rende
 def fib_Sequence (n):
    A, b = 0, 1
    tandis qu&#39;un <n:
        céder un
        A, b = b, ab

De cette façon, vous pouvez obtenir la valeur étape par étape comme ceci:

 pour num dans fib_Sequence (100):
    imprimer (num)

Cette méthode est beaucoup plus d'économie de mémoire que de créer une liste complète, surtout lorsque vous n'avez besoin que d'itérer.


Le rendement implémente un générateur de séquence infini

Parfois, vous voudrez peut-être générer une séquence "infinie", comme une séquence naturelle qui commence par 1 et est ajoutée à 1. Dans ce cas, cela ne fonctionnera certainement pas si vous utilisez une liste normale, mais il est facile d'utiliser yield .

Par exemple:

 def infinite_numbers ():
    num = 1
    Bien que vrai:
        Num de rendement
        num = 1

Vous pouvez prendre les premiers chiffres comme celui-ci:

 compteur = infinite_numbers ()
Imprimer (suivant (compteur)) # 1
Imprimer (suivant (compteur)) # 2

Bien sûr, lorsque vous l'utilisez dans une utilisation réelle, vous devez prêter attention au contrôle du nombre de cycles, sinon il entrera dans un cycle mort.


Le rendement gère les mégadonnées ou la lecture de fichiers

En plus des séquences mathématiques, yield est également utile lorsqu'il traite de grands fichiers ou de flux de données. Par exemple, si vous lisez un fichier journal de plusieurs GB, il est évidemment inapproprié de le charger en mémoire en même temps, vous pouvez utiliser le générateur pour le lire ligne par ligne.

Exemple:

 def read_large_file (file_path):
    avec open (file_path, &#39;r&#39;) comme f:
        pour la ligne en f:
            LIBEAL LINE.STRIP ()

De cette façon, vous ne lisez qu'une seule ligne à la fois et ne prendra pas trop de ressources:

 pour log_line dans read_large_file (&#39;immense_log.txt&#39;):
    processus (log_line) # Supposons que ce soit votre logique de traitement

Cette méthode est très pratique lors de l'analyse des données, du traitement ETL ou du log.


Quelques conseils: où le rendement est facile à ignorer lors de l'utilisation

  • La fonction de rendement renvoie un objet générateur , pas un résultat direct, et doit être déclenché avec next() ou for Loop.
  • Le générateur ne peut être traversé qu'une seule fois, et vous devez rappeler à nouveau la fonction pour créer un nouvel objet.
  • Si vous souhaitez obtenir tous les résultats du générateur, vous pouvez le convertir en liste: list(my_generator())
  • Le rendement peut être utilisé avec la méthode Send () pour réaliser une communication bidirectionnelle, mais il s'agit d'une utilisation avancée et n'est généralement pas couramment utilisée.

Fondamentalement, c'est tout. L'utilisation yield peut rendre votre code plus efficace et plus élégant, en particulier lorsqu'il s'agit de séquences, de données en streaming ou de grands ensembles de données.

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1543
276
Décrivez le modèle de conception de l'observateur et sa mise en œuvre dans PHP. Décrivez le modèle de conception de l'observateur et sa mise en œuvre dans PHP. Aug 15, 2025 pm 01:54 PM

TheObserverdesignpatternenablesautomaticnotificationofdependentobjectswhenasubject'sstatechanges.1)Itdefinesaone-to-manydependencybetweenobjects;2)Thesubjectmaintainsalistofobserversandnotifiesthemviaacommoninterface;3)Observersimplementanupdatemetho

Comment configurer la journalisation dans une application Java? Comment configurer la journalisation dans une application Java? Aug 15, 2025 am 11:50 AM

L'utilisation de SLF4J combinée avec la journalisation ou le log4j2 est le moyen recommandé de configurer les journaux dans les applications Java. Il introduit des bibliothèques API et implémentation en ajoutant des dépendances Maven correspondantes; 2. Obtenez l'enregistreur via le loggerfactory de SLF4J dans le code et écrivez le code journal découplé et efficace à l'aide de méthodes de journalisation paramétrée; 3. Définir le format de sortie du journal, le niveau, la cible (console, le fichier) et le contrôle du journal du package via Logback.xml ou les fichiers de configuration log4j2.xml; 4. Activer éventuellement la fonction de balayage de fichiers de configuration pour atteindre un ajustement dynamique du niveau de journal, et Springboot peut également être géré via des points de terminaison de l'actionneur; 5. Suivez les meilleures pratiques, y compris

Comment déployer une application Java Comment déployer une application Java Aug 17, 2025 am 12:56 AM

Préparez-vous en application par rapport à Mavenorgradletobuildajarorwarfile, externalisationConfiguration.2.ChoOSEADPLOYENDIRONMENT: Runonbaremetal / vmwithjava-jarandsystemd, deploywarontomcat, compeneriserisewithdocker, orusecloudplatformslikelise.

Liaison des données XML avec Castor en Java Liaison des données XML avec Castor en Java Aug 15, 2025 am 03:43 AM

CASTORENablesxml-to-javaObjectMappingViadefaultConverionsOrexplicitMappingFiles; 1) DefinejavaclasseswithGetters / seters; 2) useUnmarShallertOConvertXmltoObjects; 3)

Quelles sont les fonctions variadiques et l'opérateur SPLAT (`...`) en PHP? Quelles sont les fonctions variadiques et l'opérateur SPLAT (`...`) en PHP? Aug 17, 2025 pm 02:18 PM

Les fonctions mutables de PHP sont implémentées via l'opérateur SPLAT (...). 1. Collectez les paramètres dans la définition de la fonction, tels que FunctionSum (... $ nombres) pour agréger les paramètres passés dans un tableau; 2. Utilisez le tableau ... Démacklez lorsque vous appelez la fonction, comme ADD (... [1,2,3]) pour passer les éléments du tableau comme paramètres indépendants; Cet opérateur améliore la lisibilité du code, la sécurité et les performances des types, remplace les anciennes méthodes telles que func_get_args () et est largement utilisée dans des scénarios avec des paramètres incertains tels que le résumé, l'exploitation forestière, etc.

Comment utiliser la variable $ _cookie en php Comment utiliser la variable $ _cookie en php Aug 20, 2025 pm 07:00 PM

$ _CookieisaphpsuperglobalForAccessingCooKiessentByThebrowser; cookiesAreSetingSetCooKie () BeforeOutput, ReadVia $ _cookie ['name'], Updated Resenderwithnewvalues, anddeletedBysetinganExpiredtimestamp, withsecurit

Comment envoyer et recevoir des messages sur un WebSocket en Java Comment envoyer et recevoir des messages sur un WebSocket en Java Aug 16, 2025 am 10:36 AM

Créez un point de terminaison WebSocket Server pour définir le chemin à l'aide de @ServeRendPoint et gérer les connexions, la réception de messages, la fermeture et les erreurs via @onOpen, @onMessage, @OnClose et @onerror; 2. Assurez-vous que les dépendances Javax.websocket-API sont introduites pendant le déploiement et enregistrées automatiquement par le conteneur; 3. Le client Java obtient WebSocketContainer via le ContainerProvider, appelle ConnectToServer pour se connecter au serveur et reçoit des messages à l'aide de la classe d'annotation @clientendpoint; 4. Utilisez la session GetBasicre

Quel est le mot-clé Assert en Java? Quel est le mot-clé Assert en Java? Aug 17, 2025 am 12:52 AM

TheassertKeywordInjavaisUsedTovalIdateShandshandingsDuringDevelopment, ThrowinganAssertionErroriftheconditionisfalse.2.ithastwoforms: AssertCondition; AndSersertCondition: Message; avecthelatterProvidActureCustomerMessage.3.

See all articles