生成器、可迭代、迭代器

生成器:

  1. 将[]改为()

G = (i*I for I in range(8))

生成器是一个对象不能直接打印

通过遍历得到生成器的数据

         For I in g:

                   Print(i)

通过next得到数据 需要异常捕获

   2.Yield

def fib(times):
    n = 0
    a = 0
    b = 1
    # yield a
    # yield b
    if times <= 2:
        return
    else:
        while n <times:
            a, b = b, a + b
            n += 1
            yield b


h1 = fib(10)
for i in h1:
    print(i)

一定要在函数的内部

Yield a 向生成器中添加一个对象

Generator 生成器类型

 

裴波那切  从第三个数开始 等于前连个数的和

 

生成器的特点 节约内存

 

迭代器、可迭代

迭代器:可以被next函数调用,并不断返回下一个值的对象: iterator

可迭代:可以直接作用于for循环的对象统称为可迭代对象:  iterable

    

        

引入模块

可以被for循环的数据类型

  1. 集合数据类型, list ,tuple , dict, set, str
  2. Generator 包括生成器和带yield的generator function

         From collections.abc import iterable 可迭代

         From collections.abc import iterator 迭代器   可以next

         Isinstance(a,iterator)判断对象是否是iterator 迭代器

         Lsinstance(a,iterable)判断对象是否是iterable可迭代

         生成器是一个迭代器

Iter()函数

List, dict, str  是可迭代的(可以for遍历)不是迭代器(没有next方法)

生成器是可迭代的也是迭代器

可以将list , dict, str 等可迭代的变成迭代器  使用iter()函数:

 

         Isinstance(iter(a),iterator)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值