python 迭代器和生成器的理解

迭代器:

一些定义:

迭代器协议:对象必须提供一个next方法,执行方法要么返回迭代器中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)

可迭代对象:实现了迭代器协议的对象(实现方式:对象内部定义了一个iter()方法)

迭代:  从迭代器中取元素的过程

在Python中,迭代器是遵循迭代协议的对象。使用iter()从任何序列对象中得到迭代器(如list, tuple, dictionary, set, str等)。另一种形式的输入迭代器是generator(生成器)。

迭代器协议规定了对象必须提供一个next方法和iter方法,iter方法将对象变成迭代器,next方法可以从迭代器中去出元素,当迭代器中没有元素时,next()会引发Stopiteration异常,也可以使用for/while循环去遍历,就如同遍历普通字典列表一样,遍历完成不会报错。

 

生成器:

生成器也是一种迭代器,但是你只能对其迭代一次。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值

你通过遍历来使用它们,要么用一个for循环,要么将它们传递给任意可以进行迭代的函数和结构。大多数时候生成器是以函数来实现的,这时它们并不return一个值,而是yield一个值

迭代器具有的函数和方法生成器全都有,可以通过生成器表达式来生成生成器,如(i for i in range(100))

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值