美文网首页
生成器和迭代器

生成器和迭代器

作者: 紫弟 | 来源:发表于2018-11-05 11:41 被阅读0次
#列表生成式
lis = [x*x for x in range(10)]
print(lis)
#生成器1
generator_ex_1 = (x*x for x in range(10))
#生成器2
def generator_ex_2(max):
    n,a,b =0,0,1
    while n < max:
        yield b
        a,b =b,a+b
        n = n+1
    return 'done'
a = generator_ex_2(10)
print(generator_ex_2(10))
#generator_ex是生成器对象
print(generator_ex)

可以用next(生成器),但是我们一般用for循环来迭代生成器

使用生成器的好处:

1.内存使用更加高效。比如列表是在建立的时候就分配所有的内存空间,而生成器是需要的时候才使用,更像一个记录
2.如果我们要读取并使用的内容远远超过内存,但是需要对所有内容进行处理,那么生成器是一个很好的选择,比如可以让生成器返回当前的处理状态,由于它可以保存状态,那么下一次直接处理即可。

生成器的其他操作,导入迭代器包itertools库

imap

#没有计算,只返回一个迭代对象,普通的map已经计算完毕了,并且返回一个列表
r = itertools.imap(lambda x: x*x, [1, 2, 3])
print(r)
itertools.imap object at 0x103d3ff90>

相关文章

网友评论

      本文标题:生成器和迭代器

      本文链接:https://www.haomeiwen.com/subject/dzajxqtx.html