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)
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='')
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!