#coding=utf-8
"""
迭代器:是一个可以遍历一个容器的对象
一个迭代器在遍历并读取一个容器的数据元素时,并不会执行一个迭代
"""
#可迭代对象
"""
在python中的任意对象,只要它定义了可以返回一个迭代器的__iter__方法
或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象
可迭代对象,就是能提供迭代器的任意对象
"""
#迭代器
"""
任意对象,只要定义了__next__方法,它就是一个迭代器
"""
#迭代
"""
从一个地方取出一个元素的过程
当我们使用一个循环来遍历莫一个东西的时候,这个过程就是一个迭代
"""
#生成器
"""
生成器也是一种迭代器,但是只能迭代一次
他没有把所有值存在内存中,而是在运行时生成的值
"""
# def generator_function():
# for i in range(10):
# yield i
# for item in generator_function():
# print(item)
#最佳使用场景 :你不想同一时间将所有计算出来的大量结果分配到内存中,特别时结果集还包含循环
#定义一个斐波拉契数列生成器
# def fibon(n):
# a=b=1
# for i in range(n):
# yield a
# a,b=b,a+b
# for x in fibon(10000):
# print(x)
# def fibon(n):
# a=b=1
# result=[]
# for i in range(n):
# result.append(a)
# a,b=b,a+b
# return result
# #next() 获取一个序列的下一个元素
# def generator_function():
# for i in range(3):
# yield i
#
# gen = generator_function()
# print(next(gen))
# print(next(gen))
# print(next(gen))
#iter() :根据一个可迭代对象返回一个迭代器对象
my_string="Yasoob"
my_iter=iter(my_string)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
python进阶(三)生成器Generators
最新推荐文章于 2024-07-21 22:27:18 发布