Python迭代器和生成器
for element in [1, 2, 3]: print(element)
能for...in...的为可迭代对象
迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
判断方法:
isinstance()
迭代器定义方法:
class Reverse: """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index]
生成器:
def reverse(data): for index in range(len(data)-1, -1, -1): yield data[index]
生成器是一种简单有效的创建迭代器的工具:
1.自动创建__iter__()和__next__()
2.自动保存局部变量和执行状态
yield可以简单理解为返回一个迭代器的return
列表解析与生成器表达式:
(x+1 for x in lst) #生成器表达式,返回迭代器。外部的括号可在用于参数时省略。
[x+1 for x in lst] #列表解析,返回list