Python-迭代器
迭代器
- 列表包含的值太多 会占用大量内存
- 代器是在使用时逐一生成 迭代器只能向下取 取出后释放内存,且只能取出一次
- iter: 实现了__iter__方法的才是可迭代对象
- next: 具体实现代码
Demo
class iter_next():
def __init__(self):
self.num = 0
def __next__(self): #next 定义了如何取得偶数
self.num += 2
return self.num
def __iter__(self): #iter 只是来返回对象
return self
num = iter_next()
# for i in range(5):
# print(next(num))
print(type(num))
for i in num: # 实例化后的类本身可以迭代
if i <=10:
print(i)
else:
break
print(next(num)) #可以一不一步往下迭代 通过next函数每次取值的时候迭代器对象会调用自身的__next__方法
#并返回直刡迭代器没有值被返回旪,会抛出 StopIteration(停止迭代)异常
print(next(num))
print(next(num))
iter()
- 内置函数iter()能从可迭代对象中取得生成器并通过内置函数next()实现逐一读取
a = iter([1,2,3,4,5,6])
for c in range(2): #这里取出了两个数字
print(next(a))
for i in range(6):#这里会接着上面的取.无法从头开始
print(next(a))