# 通过迭代器取值优缺点: # 优点:不依赖索引,完成取值 # 缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)
‘‘‘ 可迭代对象: 有__iter__()方法的对象,调用该方法返回迭代器对象 有哪些:str | list | tuple | dict | set | range() | file | 迭代器对象 | enumerate() | 生成器 ‘‘‘
‘‘‘ 迭代器对象: 有__next__()方法的对象,也就是用该方法一次从迭代器对象中获取一个值,取出一个少一个 有哪些:file | enumerate() | 生成器 重点: 1.从迭代器对象中取元素,取一个少一个,如果要从头开始去,需要重新获得拥有所有元素的迭代器对象 2.迭代器对象也有__iter__()方法,调用后得到的是自己本身(当前含义几个元素,得到的就只有几个元素的迭代器对象) ‘‘‘
‘‘‘ 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
原文:https://www.cnblogs.com/king-home/p/10679752.html