Maison > Article > développement back-end > Explication détaillée des instances d'itérateur et de générateur en Python
Cet article présente principalement des informations pertinentes sur l'explication détaillée des instances d'itérateur et de générateur en Python. Les amis qui en ont besoin peuvent se référer à
Explication détaillée des instances d'itérateur et de générateur en Python<.>
Cet article résume certaines connaissances connexes sur les itérateurs et les générateurs en Python en se concentrant sur différents scénarios d'application et leurs solutions, comme suit :Parcourir manuellement les itérateurs .
def manual_iter(): with open('/etc/passwd') as f: try: while True: line=next(f) if line is None: break print(line,end='') except StopIteration: pass
#test case items=[1,2,3] it=iter(items) next(it) next(it) next(it)
2. Itération de l'agent
class Node: def init(self,value): self._value=value self._children=[] def repr(self): return 'Node({!r})'.fromat(self._value) def add_child(self,node): self._children.append(node) def iter(self): #将迭代请求传递给内部的_children属性 return iter(self._children)
#test case if name='main': root=Node(0) child1=Node(1) child2=Nide(2) root.add_child(child1) root.add_child(child2) for ch in root: print(ch)
3. Itération inverse
a=[1,2,3,4] for x in reversed(a): print(x) #4 3 2 1 f=open('somefile') for line in reversed(list(f)): print(line,end='') #test case for rr in reversed(Countdown(30)): print(rr) for rr in Countdown(30): print(rr)Exemple 2
class Countdown: def init(self,start): self.start=start #常规迭代 def iter(self): n=self.start while n > 0: yield n n -= 1 #反向迭代 def reversed(self): n=1 while n <= self.start: yield n n +=1
4. Itération sélective
with open('/etc/passwd') as f: for line in f: print(line,end='')Exemple 2
from itertools import dropwhile with open('/etc/passwd') as f: for line in dropwhile(lambda line:line.startwith('#'),f): print(line,end='')
5. Itérer plusieurs séquences simultanément
6. Itération d'éléments sur différentes collections
Développer la séquence imbriquée
7. 🎜>
contenant une déclaration de rendement
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!