python 迭代器与生成器

本文详细阐述了迭代器和生成器的概念及其在Python中的应用。介绍了可迭代对象与迭代器的区别,解释了如何利用双下方法实现迭代,并探讨了生成器函数的特点及优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迭代器与生成器

有双下划线的叫双下方法

iterable             可迭代的

只要是能被for循环的数据类型,就一定拥有__iter__方法

只要含有__iter__方法的都是可迭代的

一个列表执行了__iter__()之后的返回值就是一个迭代器

__next__   通过next就可以从迭代器中一个一个的取值

只要含有__iter__方法的都是可迭代的-------可迭代协议

迭代器协议  内部含有__next__和__iter__方法的就是迭代器

迭代器协议和可迭代协议

可以被for循环的都是可迭代的

可迭代的内部都有__iter__方法

只要是迭代器 一定可迭代

可迭代的__iter__()方法就可以得到一个迭代器

迭代器中的__next__()方法可以一个一个的获取值

for循环其实就是在使用迭代器

只有是可迭代对象的时候才能用for

当我们一遇到一个新的变量,不确定能不能for循环的时候,就判断它是可迭代

迭代器的好处

  从容器类型中一个一个的取值,会吧所有的值都取到

  节省内存空间

    迭代器并不会在内存中再占用一大块内存

      而是随着循环,每次生产一个

      每次next每次给我一个

生成器

本质还是迭代器,我们自己写的迭代器

只要含有yield关键字的函数都是生成器

yield不能和return共用,且需要卸载函数内

生成器函数:执行之后会得带一个生成器作为返回值

转载于:https://www.cnblogs.com/GrandDarkness/p/8178713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值