python进阶(三)生成器Generators

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值