码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器和生成器

时间:2018-09-18 19:19:03      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:对象   fun   表达   UNC   推导式   内存   rabl   send   value   


    迭代器:
        dir() 查看数据可以执行的方法
        Iterable: 在数据内部存在 __iter__()  可以被迭代的内容.
        Iterator: 迭代器. 存在__iter__() 还存在__next__()
        还可以引入collections 中的Iterable和Iterator
        isinstance(对象, 类型) 可以判断xxx对象是否是xxx类型
        特征:
            1. 节省内存
            2. 惰性机制(只有执行__next__()才会取值)
            3. 只能向前.
        for循环内部使用的是迭代器
            lst = [1,2,3]
            it = lst.__iter__()
            while 1:
                try:
                    it.__next__()
                except StopIteration:
                    break
##################################################################################################
生成器:
  1. 生成器
        生成器的本质就是迭代器.
        生成器由生成器函数来创建或者通过生成器表达式来创建
    2. 生成器函数
        生成器函数:在函数中return换成yield. 这个函数就是生成器函数
        def func():
            yield
        gen = func() 函数并不会被执行, 而是创建一个生成器对象
        取值:
            gen.__next__() 下一个
            gen.send() 可以给上一个yield传值, 第一次执行不能用send()
        特性:
            1. 节省内存
            2. 惰性机制
            3. 只能向前
    3. 各种推导式
        1.列表推导式: [结果 for循环 if条件]
        2.字典推导式: { key: value for循环 if条件}
        3.集合推导式: {key for循环 if条件}
    4. 生成器表达式(笔试题)
        (结果 for循环 if条件)
        惰性机制
        记录在内存中的一段代码.

迭代器和生成器

标签:对象   fun   表达   UNC   推导式   内存   rabl   send   value   

原文地址:https://www.cnblogs.com/verena/p/9670147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!