《Python程序设计基础07_11迭代器ppt课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计基础07_11迭代器ppt课件.pptx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题Python程序设计基础程序设计基础07_11迭代器迭代器杭州师范大学杭州师范大学 虞歌虞歌 第第2页页Python程序设计基础程序设计基础对象和类对象和类杭州师范大学杭州师范大学 虞歌虞歌 第第3页页Python程序设计基础程序设计基础对象和类对象和类可可迭代对象(迭代对象(Iterable),简单理解就是可以直接作用于),简单理解就是可以直接作用于for语句的对象语句的对象。字符串字符串str、列表、列表list、元组、元组tuple、集合、集合set和字典和字典dict都是可迭代对象。都是可迭代对象。每每迭代一次(即在迭代一次(即在for语句中每循环一次)都会返回对
2、象中的下一条数据,语句中每循环一次)都会返回对象中的下一条数据,一直向后读取数据直到迭代了所有的数据后结束。在这个过程中就应该有一直向后读取数据直到迭代了所有的数据后结束。在这个过程中就应该有一种机制去记录每次访问到了第几条数据,以便每次迭代都可以返回下一一种机制去记录每次访问到了第几条数据,以便每次迭代都可以返回下一条数据。这种机制就被称为迭代器(条数据。这种机制就被称为迭代器(Iterator)。杭州师范大学杭州师范大学 虞歌虞歌 第第4页页Python程序设计基础程序设计基础对象和类对象和类使用使用isinstance函数来判断一个对象是否是可迭代对象,返回值为函数来判断一个对象是否是可
3、迭代对象,返回值为True时时即为可迭代对象即为可迭代对象。杭州师范大学杭州师范大学 虞歌虞歌 第第5页页Python程序设计基础程序设计基础对象和类对象和类使用使用isinstance函数来判断一个对象是否是迭代器,返回值为函数来判断一个对象是否是迭代器,返回值为True时即为时即为迭代器迭代器。字符串字符串str、列表、列表list、元组、元组tuple、集合、集合set和字典和字典dict虽然都是可迭代对象,却虽然都是可迭代对象,却不是迭代器。不是迭代器。杭州师范大学杭州师范大学 虞歌虞歌 第第6页页Python程序设计基础程序设计基础对象和类对象和类使用使用iter函数把字符串函数把字
4、符串str、列表、列表list、元组、元组tuple、集合、集合set和字典和字典dict等可迭等可迭代对象转换为迭代器。代对象转换为迭代器。杭州师范大学杭州师范大学 虞歌虞歌 第第7页页Python程序设计基础程序设计基础对象和类对象和类每每一个迭代器都支持一个迭代器都支持next函数函数。通过通过iter函数获取可迭代对象的迭代器,然后可以对获取到的迭代器不断函数获取可迭代对象的迭代器,然后可以对获取到的迭代器不断使用使用next函数获取下一条数据,直到最后抛出函数获取下一条数据,直到最后抛出StopIteration异常,表示无异常,表示无法继续获取下一个值了法继续获取下一个值了。也可以
5、这样认为,被也可以这样认为,被next函数调用并不断返回下一个值的对象称为迭代器。函数调用并不断返回下一个值的对象称为迭代器。杭州师范大学杭州师范大学 虞歌虞歌 第第8页页Python程序设计基础程序设计基础对象和类对象和类可可迭代对象具有迭代对象具有_iter_方法方法。迭代迭代器具有器具有_iter_和和_next_方法方法。_iter_方法返回迭代方法返回迭代器。器。_next_方法返回迭代器的下一个元素,直到结尾抛出方法返回迭代器的下一个元素,直到结尾抛出StopIteration异常。异常。iter函数实际上就是调用了函数实际上就是调用了_iter_方法,方法,next函数实际上就是
6、调用了函数实际上就是调用了_next_方法方法。若要若要for语句可以直接作用于自定义类对象,则必须在类中重定义语句可以直接作用于自定义类对象,则必须在类中重定义_iter_和和_next_方法。方法。杭州师范大学杭州师范大学 虞歌虞歌 第第9页页Python程序设计基础程序设计基础对象和类对象和类编写编写程序,自定义迭代器生成斐波那契数列程序,自定义迭代器生成斐波那契数列。self._a初始值为初始值为0,表示表示数列数列第第1项是项是0。self._b初始值为初始值为1,表示表示数列数列第第2项是项是1。self._count初始值为初始值为1,计数器,统计,计数器,统计当前当前的数列的数列的项数。的项数。self._n中存放的是要生成中存放的是要生成的数列的数列的总项数。的总项数。只要只要self._count的值不大于的值不大于self._n,就,就返返回数列回数列下一项的值。否则,抛出下一项的值。否则,抛出StopIteration异常。异常。