189 8069 5689

python迭代器和生成器区别有哪些-创新互联

小编给大家分享一下python迭代器和生成器区别有哪些,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

成都创新互联专注于富县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供富县营销型网站建设,富县网站制作、富县网页设计、富县网站官网定制、小程序定制开发服务,打造富县网络公司原创品牌,更为您提供富县网站排名全网营销落地服务。

迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string、list、dict、tuple 等这类容器对象,使用 for 循环遍历是很方便的。

python迭代器和生成器区别有哪些

在后台 for 语句对容器对象调用 iter()函数,iter()是 python 的内置函数。iter()会返回一个定义了 next()方法的迭代器对象,它在容器中逐个访问容器内元素,next() 也是 python 的内置函数。在没有后续元素时,next()会抛出一个 StopIteration 异常。

# 随便定义一个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迭代器和生成器区别有哪些-创新互联
文章位置:http://cdxtjz.com/article/dchgpi.html

其他资讯