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

假期ython学习第四日

时间:2019-07-10 18:52:18      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:inf   注意   ati   列表   iter   yield   元素   对象   alt   

迭代器,生成器

#对于序列类型:字符串,列表,元组,我们可以使用索引的方式迭代去除其他包含的元
#到那时对于字典,集合,文件等类型没有索引的,诺还想去除其内部包含的元素,则必
#须找出一种不依赖于索引的迭代方式,此为迭代器

#2.什么是可迭代对象
#可迭代对象指的是内置有__iter__方法的对象,即__iter__,如下

#什么是迭代器对象
#可迭代对象执行obk.__iter__()得到的结果就是迭代器对象
#而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
#4.注意:
#迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象
#优点:
#- 提供一种统一的、不依赖于索引的迭代方式
#- 惰性计算,节省内存
#缺点:
##- 无法获取长度(只有在next完毕才知道到底有几个值)
#- 一次性的,只能往后走,不能往前退

迭代器中yield会暂停并保存当前的运行信息,等到下次进行循环的时候,可以直接使用

import sys

def fb(n):
    a=0
    b=1
    counter=1
    while(counter<n):
        yield a
        a,b=b,a+b
        counter+=1
f=fb(10)
while True:
    try:
        print(next(f),end=" ")
    except StopIteration:
        sys.exit()

结果为技术图片

中间的yield用来保存运算进程并且保存a的值,进行下一次的运算

StopIteration用于停止进程


假期ython学习第四日

标签:inf   注意   ati   列表   iter   yield   元素   对象   alt   

原文地址:https://www.cnblogs.com/friendg/p/11165457.html

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