迭代器与生成器

迭代器和生成器是python中用于处理可迭代对象的两个相关但不相同的概念,他们在实现和使用方式上有一些区别。

一 迭代器

定义:迭代器是一个实现了"__iter__()"和"__next__()"方法的对象。"__iter__()"返回迭代器自身对象,“__next__()”返回迭代中的下一个值。

特点:迭代器是一种用来遍历序列的通用方法,它一次只能获取一个值,直到序列结束。如果没有更多的值可获取,"__next__()"方法引发'StopIteration'异常。

示例:

num = [1, 2, 3, 4, 5]
iter_num = iter(num)

print(next(iter_num)) #输出:1
print(next(iter_num)) #输出:2

二 生成器

定义:生成器是一种特殊的迭代器,它使用yield语句来生成值。生成器函数包含yield语句,每次调用生成器函数时,他会执行到yield处并返回一个值,然后暂停保持函数的状态,等待下一次调用。

特点:生成器函数在迭代过程中保持状态,因此不需要在内存中保存整个序列。生成器按需生成值,不需要一次性在内存中存储整个序列,因此在处理大量数据或无限序列时更加高效。

示例:

 def genarator(n):
    for i in range(n):
        yield i

gen = genarator(3)

for num in gen:
    print(num)

#输出:
#0
#1
#2

你可能感兴趣的:(python)