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

迭代器和生成器

时间:2018-09-24 11:24:36      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:for循环   情况   分段   通过   有一个   文件   语法   转换   generator   

# 迭代器和生成器
# 迭代器:
# 双下方法 : 很少直接调用的方法。一般情况下,是通过其他语法触发的
# 可迭代的 —— 可迭代协议 含有__iter__的方法(‘__iter__‘ in dir(数据))
# 可迭代的一定可以被for循环
# 迭代器协议: 含有__iter__和__next__方法
# 迭代器一定可迭代,可迭代的通过调用iter()方法就能得到一个迭代器
# 迭代器的特点:
    # 很方便使用,且只能取所有的数据取一次
    # 节省内存空间

# 生成器
# 生成器的本质就是迭代器
# 生成器的表现形式
    # 生成器函数
    # 生成器表达式
# 生成器函数:
    #含有yield关键字的函数就是生成器函数
    #特点:
        #调用函数的之后函数不执行,返回一个生成器
        #每次调用next方法的时候会取到一个值
        #直到取完最后一个,在执行next会报错

# 写生成器实现:有一个文件,从文件里分段读取内容
# readline
read(10)
#在读出来的内容前面加上一个‘***‘,再返回给调用者
def generator():
    for i in range(20):
        yield 哇哈哈%s%i

g = generator()  #调用生成器函数得到一个生成器
print(list(g))
ret = g.__next__()     #每一次执行g.__next__就是从生成器中取值,预示着生成器函数中的代码继续执行
print(ret)
num = 0
for i in g:
    num += 1
    if num > 50:
        break
    print(i)

# 从生成器中取值的几个方法
    # next
    # for
    # 数据类型的强制转换 : 占用内存

 

迭代器和生成器

标签:for循环   情况   分段   通过   有一个   文件   语法   转换   generator   

原文地址:https://www.cnblogs.com/limw/p/9694672.html

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