跳转至

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))