Table des matières
Comment implémenter des objets itérables et des itérations Objet itérateur
Introduction aux générateurs
Comment utiliser les fonctions génératrices pour implémenter des objets itérables
Comment effectuer une itération inverse et comment implémenter une itération inverse
Comment effectuer des opérations de découpage sur les itérateurs
Comment itérer plusieurs objets itérables dans une instruction for
Maison développement back-end Tutoriel Python Écrit pour le master de programmation Python 2 : itérateurs

Écrit pour le master de programmation Python 2 : itérateurs

Nov 04, 2020 pm 05:19 PM
python编程 迭代器

La colonne

Tutoriel Python présente les itérateurs utilisés en programmation.

Écrit pour le master de programmation Python 2 : itérateurs

Recommandations d'apprentissage gratuites associées : Tutoriel Python (vidéo)

Comment implémenter des objets itérables et des itérations Objet itérateur

Le modèle itérateur est un modèle de conception de logiciel classique, et de nombreux langages de programmation intègrent désormais ce modèle de conception. Parmi les types de données primitifs de Python, ceux qui peuvent être utilisés pour les boucles sont des types itérables. Bien entendu, vous pouvez également utiliser la fonction iter pour obtenir l'itérateur correspondant puis parcourir l'objet. Par exemple, le code suivant :

l = [1, 3]  # 可迭代对象 __iter__t = iter(l) #获取迭代器对象print(t.__next__())
print(t.__next__())# print(t.__next__()) # 报异常复制代码
Copier après la connexion

Pour implémenter un objet itérable, vous devez d'abord implémenter l'objet itérateur correspondant. Pour implémenter un itérateur en Python, il vous suffit d'implémenter la méthode __next__. Cependant, la classe Iterator du package collections définit la méthode __next__ comme une méthode abstraite. L'auteur estime qu'en raison de la lisibilité du programme, vous souhaiterez peut-être hériter de la classe Iterator lors de l'implémentation d'un itérateur.

from random import samplefrom collections import Iterable, Iteratorclass WeatherIterator(Iterator):
    def __init__(self, cities):
        self.cities = cities
        self.index = 0

    def getWeather(self, city):
        return (city, sample(['sun','wind','yu'], 1)[0])    def __next__(self):
        if self.index == len(self.cities):            raise StopIteration
        city = self.cities[self.index]
        self.index += 1
        return self.getWeather(city)复制代码
Copier après la connexion

Pour implémenter un objet itérable, il vous suffit d'implémenter la méthode __iter__ De même, la classe Iterable du package collections définit également la méthode __iter__ comme une classe abstraite.

from collections import Iterableclass WeatherIterable(Iterable):
    def __init__(self, cities):
        self.cities = cities
        self.index = 0

    def __iter__(self):
        return WeatherIterator(self.cities)复制代码
Copier après la connexion

De cette façon, vous pouvez utiliser une boucle for pour itérer.

for weather in WeatherIterable(['北京', '上海', '广州']):
    print(weather)复制代码
Copier après la connexion

Introduction aux générateurs

Regardez d'abord le code suivant :

def gen():
    print("step 1")    yield 1
    print("step 2")    yield 2
    print("step 3")    yield 3复制代码
Copier après la connexion

La valeur de retour de la fonction gen ci-dessus est un objet générateur.

g = gen()
g.__next__()
print(g.__next__())
print(g.__next__())复制代码
Copier après la connexion

Comme le montre le code ci-dessus, chaque fois que la méthode __next__ du générateur est appelée, elle exécutera une fonction gen jusqu'à ce qu'elle rencontre le mot-clé rendement et renverra ce qui suit. Un générateur peut donc être compris comme une fonction qui peut être interrompue.

Remarque : les objets générateurs sont également des objets itérables.

for x in g:
    print(x)复制代码
Copier après la connexion

Comment utiliser les fonctions génératrices pour implémenter des objets itérables

En implémentant la méthode __iter__ en tant que fonction génératrice, vous pouvez implémenter des objets itérables.

class PrimeNumbers:
    def __init__(self, start, end):
        self.start = start
        self.end = end    def isPrimeNum(self, k):  #判断是否是素数
        if k < 2:            return False
        for i in range(2, k):            if k % i == 0:                return False
        return True

    def __iter__(self):
        for k in range(self.start, self.end + 1):            if self.isPrimeNum(k):                yield kfor num in PrimeNumbers(2, 100):
    print(num)复制代码
Copier après la connexion

Comment effectuer une itération inverse et comment implémenter une itération inverse

La fonction iter peut obtenir l'itérateur avant de l'objet itérable, et la fonction inversée peut obtenir l'itérateur inverse de l'objet itérable itérateur.

l = [1, 2, 3, 4, 5]for x in reversed(l):
    print(x)复制代码
Copier après la connexion

Pour implémenter l'itération inverse, implémentez simplement la méthode __reversed__.

class FloatRange:
    def __init__(self, start, end, step=0.1):
        self.start = start
        self.end = end
        self.step = step    def __iter__(self):
        t = self.start        while t <= self.end:            yield t
            t += self.step    def __reversed__(self):
        t = self.end        while t >= self.start:            yield t
            t -= self.stepfor x in FloatRange(1.0, 4.0, 0.5):
    print(x)for x in reversed(FloatRange(1.0, 4.0, 0.5)):
    print(x)复制代码
Copier après la connexion

Comment effectuer des opérations de découpage sur les itérateurs

La fonction islice du package itertools peut effectuer des opérations de découpage sur des objets itérables.

from itertools import islicefor x in islice(FloatRange(1.0, 4.0, 0.5), 2, 5):
    print(x)复制代码
Copier après la connexion

Comment itérer plusieurs objets itérables dans une instruction for

Utilisez la méthode zip pour former un tuple d'éléments correspondants.

for w, e, m in zip([1, 2, 3, 4], ('a', 'b', 'c','d'), [5, 6, 7, 8]):
    print(w, e, m)复制代码
Copier après la connexion

Utilisez la fonction chain dans le package itertools pour concaténer plusieurs objets itérables. Utilisez la méthode zip pour former un tuple d'éléments correspondants.

from itertools import chainfor x in chain([1, 2, 3, 4], ('a', 'b', 'c','d')):
    print(x)复制代码
Copier après la connexion

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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)

Comment utiliser des itérateurs et des algorithmes récursifs pour traiter des données en C# Comment utiliser des itérateurs et des algorithmes récursifs pour traiter des données en C# Oct 08, 2023 pm 07:21 PM

Comment utiliser des itérateurs et des algorithmes récursifs pour traiter des données en C# nécessite des exemples de code spécifiques. En C#, les itérateurs et les algorithmes récursifs sont deux méthodes de traitement de données couramment utilisées. Les itérateurs peuvent nous aider à parcourir les éléments d'une collection et les algorithmes récursifs peuvent gérer efficacement des problèmes complexes. Cet article explique comment utiliser les itérateurs et les algorithmes récursifs pour traiter les données et fournit des exemples de code spécifiques. Utilisation d'itérateurs pour traiter les données En C#, nous pouvons utiliser des itérateurs pour parcourir les éléments d'une collection sans connaître à l'avance la taille de la collection. Grâce à l'itérateur, je

Comment utiliser Python pour les scripts et l'exécution sous Linux Comment utiliser Python pour les scripts et l'exécution sous Linux Oct 05, 2023 am 11:45 AM

Comment utiliser Python pour écrire et exécuter des scripts sous Linux Dans le système d'exploitation Linux, nous pouvons utiliser Python pour écrire et exécuter divers scripts. Python est un langage de programmation concis et puissant qui fournit une multitude de bibliothèques et d'outils pour rendre la création de scripts plus facile et plus efficace. Ci-dessous, nous présenterons les étapes de base de l'utilisation de Python pour l'écriture et l'exécution de scripts sous Linux, et fournirons quelques exemples de code spécifiques pour vous aider à mieux le comprendre et l'utiliser. Installer Python

Utilisation de la fonction sqrt() en Python Utilisation de la fonction sqrt() en Python Feb 21, 2024 pm 03:09 PM

Exemples d'utilisation et de code de la fonction sqrt() en Python 1. Fonction et introduction de la fonction sqrt() Dans la programmation Python, la fonction sqrt() est une fonction du module mathématique, et sa fonction est de calculer la racine carrée de un numéro. La racine carrée signifie qu'un nombre multiplié par lui-même est égal au carré du nombre, c'est-à-dire x*x=n, alors x est la racine carrée de n. La fonction sqrt() peut être utilisée dans le programme pour calculer la racine carrée. 2. Comment utiliser la fonction sqrt() en Python, sq

Apprenez à utiliser la programmation Python pour réaliser l'amarrage de l'interface de reconnaissance d'image Baidu et réaliser la fonction de reconnaissance d'image. Apprenez à utiliser la programmation Python pour réaliser l'amarrage de l'interface de reconnaissance d'image Baidu et réaliser la fonction de reconnaissance d'image. Aug 25, 2023 pm 03:10 PM

Apprenez à utiliser la programmation Python pour implémenter l'amarrage de l'interface de reconnaissance d'image de Baidu et réaliser la fonction de reconnaissance d'image. Dans le domaine de la vision par ordinateur, la technologie de reconnaissance d'image est une technologie très importante. Baidu fournit une puissante interface de reconnaissance d'images grâce à laquelle nous pouvons facilement mettre en œuvre la classification, l'étiquetage, la reconnaissance faciale et d'autres fonctions d'images. Cet article vous apprendra comment utiliser le langage de programmation Python pour implémenter des fonctions de reconnaissance d'images en vous connectant à l'interface de reconnaissance d'images de Baidu. Tout d’abord, nous devons créer une application sur Baidu Developer Platform et obtenir

Comment écrire un algorithme d'analyse des composantes principales PCA en Python ? Comment écrire un algorithme d'analyse des composantes principales PCA en Python ? Sep 20, 2023 am 10:34 AM

Comment écrire un algorithme d'analyse des composantes principales PCA en Python ? PCA (PrincipalComponentAnalysis) est un algorithme d'apprentissage non supervisé couramment utilisé pour réduire la dimensionnalité des données afin de mieux comprendre et analyser les données. Dans cet article, nous apprendrons comment écrire l'algorithme d'analyse des composantes principales PCA à l'aide de Python et fournirons des exemples de code spécifiques. Les étapes de l'ACP sont les suivantes : Standardiser les données : mettre à zéro la moyenne de chaque caractéristique des données et ajuster la variance sur la même plage pour garantir

Programmation Python pour analyser la fonction de conversion de coordonnées dans la documentation de l'API Baidu Map Programmation Python pour analyser la fonction de conversion de coordonnées dans la documentation de l'API Baidu Map Aug 01, 2023 am 08:57 AM

Programmation Python pour analyser la fonction de conversion de coordonnées dans le document Baidu Map API Introduction : Avec le développement rapide d'Internet, la fonction de positionnement cartographique est devenue un élément indispensable de la vie des gens modernes. En tant que l'un des services de cartographie les plus populaires en Chine, Baidu Maps fournit une série d'API que les développeurs peuvent utiliser. Cet article utilisera la programmation Python pour analyser la fonction de conversion de coordonnées dans la documentation de l'API Baidu Map et donnera des exemples de code correspondants. 1. Introduction En développement, nous sommes parfois confrontés à des problèmes de conversion de coordonnées. Carte Baidu AP

Comment faire du traitement et de la reconnaissance d'images en Python Comment faire du traitement et de la reconnaissance d'images en Python Oct 20, 2023 pm 12:10 PM

Comment effectuer le traitement et la reconnaissance d'images en Python Résumé : La technologie moderne a fait du traitement et de la reconnaissance d'images un outil important dans de nombreux domaines. Python est un langage de programmation facile à apprendre et à utiliser doté de riches bibliothèques de traitement et de reconnaissance d'images. Cet article expliquera comment utiliser Python pour le traitement et la reconnaissance d'images, et fournira des exemples de code spécifiques. Traitement d'image : le traitement d'image est le processus consistant à effectuer diverses opérations et transformations sur des images pour améliorer la qualité de l'image, extraire des informations des images, etc. Bibliothèque PIL en Python (Pi

Comment écrire un programme en Python pour obtenir des tuiles de carte dans l'API Baidu Map ? Comment écrire un programme en Python pour obtenir des tuiles de carte dans l'API Baidu Map ? Jul 31, 2023 pm 04:21 PM

Comment écrire un programme en Python pour obtenir des tuiles de carte dans l'API Baidu Map ? Les vignettes de carte sont les éléments de base qui composent une carte. En divisant la carte en petites images indépendantes, vous pouvez accélérer le chargement et l'affichage de la carte. L'API Baidu Map fournit des données riches sur les tuiles de carte. Cet article explique comment utiliser Python pour obtenir des tuiles de carte dans l'API Baidu Map et donne des exemples de code. L'obtention des tuiles cartographiques de l'API Baidu Map nécessite l'utilisation de la clé (ak) fournie par l'interface. Vous devez donc d'abord utiliser Baidu Map.

See all articles