-
可迭代(Iterable)
可迭代对象是指任何可以被迭代的对象,例如列表、元组、集合、字典等。
可迭代对象可以通过iter()
函数转换为迭代器,然后可以使用next()
函数逐个访问其中的元素。
my_list = [1, 2, 3]
for item in my_list:
print(item)
迭代器(Iterator)
迭代器是一个具有__next__()
方法的对象,每次调用__next__()
方法都会返回序列中的下一个元素。
迭代器通过iter()
函数创建,可以使用next()
函数逐个访问元素,直到抛出StopIteration
异常。
迭代器可以遍历大型数据集,而不会一次性将所有数据加载到内存中。
my_list = [1, 2, 3]
my_iterator = iter(my_list)
print(next(my_iterator)) # 输出:1
print(next(my_iterator)) # 输出:2
print(next(my_iterator)) # 输出:3
生成器(Generator)
生成器是一种特殊的迭代器,可以通过函数和yield
语句来创建,而不是通过class
和__iter__()
方法。
生成器函数在每次调用时会返回一个值,并保持函数的状态,以便下一次调用时可以继续执行。
生成器函数可以使用yield
语句多次返回值,而不是一次性返回所有值。
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # 输出:1
print(next(gen)) # 输出:2
print(next(gen)) # 输出:3
总结:
可迭代对象是可以被迭代的对象,迭代器是可迭代对象的一种实现方式,生成器是一种特殊的迭代器。
可迭代对象通过iter()
函数转换为迭代器,迭代器通过next()
函数逐个访问元素,生成器通过函数和yield
语句来创建。