recherche
Maisondéveloppement back-endTutoriel PythonExpliquer Iterable vs Iterator en Python

Explaining Iterable vs Iterator in Python

Le but de cette page ? est de démontrer la dynamique des 2 protocoles d'itération :

  1. itérable
  2. itérateur

1. MAIS D'ABORD (AJOUTER À DES MOTS SIMILAIRES CONFUSANT), ABORDONS L'ITÉRATION

  • L'itération - bien sûr - consiste à prendre les éléments un par un d'une source et à faire quelque chose avec chacun à son tour
  • en python, ceci est couramment utilisé dans
    • a) les boucles for/while et
    • b) compréhensions
  • par défaut - ces structures itèrent sur toute la structure
  • parfois, cependant, un contrôle plus fin pourrait être nécessaire - comme dans les générateurs
  • pour cela, il existe 2 concepts/protocoles importants, sur lesquels une grande partie de Python est construite :
  • a) objets itérables
  • b) objets itérateurs
  • les deux sont reflétés dans les protocoles Python standard
  • ce n'est pas quelque chose de plus : en fait, les boucles for/while et les compréhensions sont construites directement sur ces éléments de niveau inférieur des protocoles d'itération

2. LA MÉTHODE ITER() CRÉE UN ITERATEUR À PARTIR D'UN ITERABLE

  • objet itérable (collection ou flux d'objets) est tout objet qui peut être transmis à la fonction iter() intégrée
  • une fois passée la fonction intégrée iter() et qui renvoie un objet itérateur d'un type passé, c'est à dire qu'un itérateur de chaîne est créé avec
>>> example_iterator = iter('abc')
>>> example_iterator
<str_iterator object at>
</str_iterator>
  • notez que l'itérateur est un objet séquence implicite fournissant un accès séquentiel (et non aléatoire !) à un ensemble de données séquentiel sous-jacent
  • par exemple, l'objet range lui-même n'est pas un itérateur
  • l'itérateur ne permet pas l'accès à un élément arbitraire de la série sous-jacente
  • ils donnent accès uniquement au suivant élément de la série
  • ils fournissent accès séquentiel
<!-- THIS IS NOT AN ITERATOR -->
>>> r = range(10)[5]
>>> r
5

3. LA FONCTION NEXT() RETOURNE LA VALEUR SUIVANTE À PARTIR D'UN ITÉRATEUR

  • le next() intégré nécessite un objet iterator - et il renvoie la valeur suivante dans l'itération d'une collection
  • l'itérateur se compose de 2 composants :
  • mécanisme de récupération de l'élément suivant d'une collection
  • mécanisme de signalisation de la fin de la série

Dans les langages de programmation avec systèmes d'objets intégrés, cette abstraction correspond généralement à une interface particulière qui peut être implémentée par les classes

  • next() permet de considérer chaque élément tour à tour / sur demande - pas toute la série du début à la fin
  • il y a 2 messages inclus dans l'interface de l'itérateur
    • suivant → requête pour l'élément suivant
    • iter → renvoie l'itérateur
  • contrainte : l'itérateur peut être itéré une fois

4. EXEMPLE DE CLASSE - DE L'ITÉRABLE À L'ITÉRATEUR À L'EXCEPTION D'ARRÊTITÉRATION

  • Python, généreusement, lève une exception du type StopIteration
>>> example_iterator = iter('abc')
>>> example_iterator
<str_iterator object at>
</str_iterator>

5. EXEMPLE RÉEL - TEST UNITÉ DE PLUSIEURS ENTRÉES DE LIGNE DE COMMANDE

  1. définir/obtenir un objet itérable tel qu'une liste ["20.01", "y"]
  2. passer un objet itérable dans iter() → créer un objet itérateur
  3. passez un objet itérateur dans un next() pour obtenir la valeur suivante de la liste à chaque fois que la fonction d'entrée est appelée dans le code
<!-- THIS IS NOT AN ITERATOR -->
>>> r = range(10)[5]
>>> r
5
  • la première fois que input() est rencontré, la valeur "20.01" est transmise,
  • la deuxième fois c'est "y"
  • la troisième fois ce serait une exception

6. LIENS

  • https://mypy.readthedocs.io/en/stable/protocols.html#iteration-protocols
  • 5.2 Séquences implicites - SICP en Python

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
Comment coupez-vous une liste de python?Comment coupez-vous une liste de python?May 02, 2025 am 12:14 AM

SlitingyPapyThonListIsDoneUsingTheSyntaxList [Démarrage: arrêt: étape] .He'showitworks: 1) startisheindexofthefirStelementoinclude.2) stopisTheIndexoftheFirstelementsoexclude.3) StepistheincrementBetweenselans.it'susefulfactingPortationSoListShsandCanusegeg

Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?May 02, 2025 am 12:09 AM

NumpyAllowsForvariousOperations ONARRAYS: 1) BasicarithmeticLikeaddition, Soustraction, Multiplication, anddivision; 2) AdvancedOperationSuchasmatrixMultiplication; 3) Element-Wiseoperations withoutExplicitloop

Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?May 02, 2025 am 12:09 AM

ArraySinpython, en particulier ThroughNumpyandPandas, aressentialfordataanalysis, offingspeeedAfficiency.1) numpyarrayablefficienthandlingoflargedatasetsandComplexOperationsLikEMoVingAverages.2)

Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?May 02, 2025 am 12:08 AM

ListsandNumpyArraysInpythonHaveDidifferentMemoryfootprints: listsaRemoreFlexibles Butlessmemory économe, tandis que la liste de résensés est-ce qui

Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?May 02, 2025 am 12:07 AM

ToenSurepythonscriptsBeHavecorrectlyAcrossDevelopment, mise en scène et production, catégories de type: 1) EnvironmentVariblesForsImplesettings, 2) ConfigurationFilesForComplexsetups et3) dynamicloadingforadaptability.eachMethodoffersNebeneFitsAndreCeresca

Comment trancher un tableau Python?Comment trancher un tableau Python?May 01, 2025 am 12:18 AM

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?May 01, 2025 am 12:06 AM

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Comment pouvez-vous convertir un tableau Python en une liste Python?Comment pouvez-vous convertir un tableau Python en une liste Python?May 01, 2025 am 12:05 AM

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.

See all articles

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

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.