在背景 for 语句对容器对象挪用 iter()函数,iter()是 python 的内置函数。iter()会返回一个定义了 next()要领的迭代器对象,它在容器中逐一接见容器内元素,next() 也是 python 的内置函数。在没有后续元素时,next()会抛出一个 StopIteration 非常。(引荐进修:Python视频教程)
# 随意定义一个list listArray=[1,2,3] # 运用iter()函数 iterName=iter(listArray) print(iterName)
生成器(Generator)是建立迭代器的简朴而壮大的东西。它们写起来就像是正规的函数,只是在须要返回数据的时刻运用 yield 语句。每次 next()被挪用时,生成器会返回它离开的位置(它影象语句末了一次实行的位置和一切的数据值)
# 菲波那切数列 def Fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return '亲!没有数据了...' # 挪用要领,生成出10个数来 f=Fib(10) # 运用一个轮回捕捉末了return 返回的值,保留在非常StopIteration的value中 while True: try: x=next(f) print("f:",x) except StopIteration as e: print("生成器末了的返回值是:",e.value) break
区分:
生成器能做到迭代器能做的一切事,而且由于自动建立了 iter()和 next()要领,生成器显得迥殊简约,而且生成器也是高效的,运用生成器表达式庖代列表剖析能够同时节约内存。除了建立和保留顺序状况的自动要领,当发生器闭幕时,还会自动抛出 StopIteration 非常。
更多Python相干技术文章,请接见Python教程栏目举行进修!
以上就是python迭代器和生成器区分的细致内容,更多请关注ki4网别的相干文章!