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

迭代器生成器

时间:2019-04-23 20:46:17      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:str   自动获取   next   int   返回   range   哪些   依赖   __next__   

迭代器

# 通过迭代器取值优缺点: 
# 优点:不依赖索引,完成取值
# 缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)

可迭代对象

'''
可迭代对象: 有__iter__()方法的对象,调用该方法返回迭代器对象

有哪些:str | list | tuple | dict | set | range() | file | 迭代器对象 | enumerate() | 生成器
'''

迭代器对象

'''
迭代器对象: 有__next__()方法的对象,也就是用该方法一次从迭代器对象中获取一个值,取出一个少一个

有哪些:file | enumerate() | 生成器

重点:
1.从迭代器对象中取元素,取一个少一个,如果要从头开始去,需要重新获得拥有所有元素的迭代器对象
2.迭代器对象也有__iter__()方法,调用后得到的是自己本身(当前含义几个元素,得到的就只有几个元素的迭代器对象)
'''

for循环迭代

'''
1.自动获取被迭代对象的迭代器对象
2.在内部一次一次调用__next__()方法取值;
3.自动完成异常处理
'''

生成器

# 生成器:包含yield关键字的函数就是生成器
def my_generator():
    yield 1
    yield 2
    yield 3
g_obj = my_generator()
# my_generator()并不会执行函数体,得到的返回值就是生成器对象
# 生成器对象就是迭代器对象
r1 = g_obj.__next__() # 1

for v in g_obj:
    print(v)  # 2 | 3

迭代器生成器

标签:str   自动获取   next   int   返回   range   哪些   依赖   __next__   

原文地址:https://www.cnblogs.com/limengda/p/10758682.html

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