好网站建设公司哪个好呀,石墨网站开发,装潢公司网站建设,做点效果图赚钱的网站什么是迭代器
迭代器的作用#xff1a;访问容器中的元素
首先要了解什么是Iterablelterable(可迭代的)
字符串、列表、元组、字典都是lterable#xff0c;都可以放到for循环语句中遍历
lterable类型的定义中一定有一个_iter_方法iter 方法必须返回一个lterator(迭代器)
可以…什么是迭代器
迭代器的作用访问容器中的元素
首先要了解什么是Iterablelterable(可迭代的)
字符串、列表、元组、字典都是lterable都可以放到for循环语句中遍历
lterable类型的定义中一定有一个_iter_方法iter 方法必须返回一个lterator(迭代器)·
可以对lterable调用内置函数iter本质就是调用Iterable内部的 iter 方法得到一个迭代iterator
lterator继承了lterable所以lterator一定是可迭代的对象,反之则不然。
lterator类型的定义中一定有一个_next__方法next 方法用于返回lterator中的下一个值
·可以对lterator调用内置函数next本质就是调用Iterator内部的next方法·当lterator所有值都已经取完再对其调用next时会抛出Stoplteration异常from typing import Iterable,Iteratorname 王麻子
girlfrilends [照明, 小赵, 走直落]
print(isinstance(name, Iterator)) # 判断name是否是Iterator类型
print(isinstance(girlfrilends, Iterator)) # 判断girlfrilends是否是Iterator类型print(isinstance(name, Iterable)) # 判断name是否是Iterable类型
print(isinstance(girlfrilends, Iterable)) # 判断girlfrilends是否是Iterable类型运行结果
# 对可迭代对象Iterable调用内置的函数iter获取他的迭代器
i1 iter(name)
print(i1, isinstance(i1, Iterator))
i2 iter(girlfrilends)
print(i2, isinstance(i2, Iterator))运行结果
# 可以对迭代器调用next内置函数获取其中的下一个值
print(next(i1), end)
print(next(i1), end)
print(next(i1), end)
print(next(i1), end) # 当迭代器中无值可以迭代后再调用next函数会抛出StopIteration异常
运行结果
# 自定义迭代器
自定义迭代器Iterator本质上:就是定义一个类这个类中必须定义__iter--、--next-设计:书架类(迭代器)对书架进行迭代可以每次返回一本书from typing import Iterable,Iterator
class BookShelf:def __init__(self):self.books [西游记, 水浒传, 红楼梦, 三国演义]self.curr_index -1 # 当前已经迭代到的值的索引def __iter__(self):用于返回迭代器return selfdef __next__(self):if self.curr_index len(self.books)-1:raise StopIterationself.curr_index 1print(self.curr_index)return self.books[self.curr_index]if __name__ __main__:bs BookShelf()print(bs, isinstance(bs, Iterable))print(bs, isinstance(bs, Iterator))for i in bs:print(i)print(next(bs))print(next(bs))print(next(bs))print(next(bs))print(next(bs)) # 调用的时候索引为3运行结果