博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 迭代器与生成器
阅读量:6224 次
发布时间:2019-06-21

本文共 659 字,大约阅读时间需要 2 分钟。

迭代器与生成器

有双下划线的叫双下方法

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

你可能感兴趣的文章
Winform开发框架之对话框样式同化
查看>>
一脸懵逼学习Linux的Shell编程
查看>>
Jmeter调试工具---Debug Sampler
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.14
查看>>
impdp的TABLE_EXISTS_ACTION参数选项
查看>>
机器学习之深入理解神经网络理论基础、BP算法及其Python实现
查看>>
ecshop设置一个子类对应多个父类并指定跳转url的修改方法
查看>>
【spring源码学习】spring的事务管理的源码解析
查看>>
遇见喜欢数学的女孩
查看>>
linux进程资源占用高原因分析命令记录
查看>>
【转】solr+ajax智能拼音详解---solr跨域请求
查看>>
SOA架构设计经验分享—架构、职责、数据一致性
查看>>
微信开发之推广支持
查看>>
第 50 章 Resin
查看>>
服务器操作系统应该选择Debian/Ubuntu还是CentOS?
查看>>
Hbase集群master.HMasterCommandLine: Master exiting
查看>>
程序员面试宝典——总结
查看>>
sqlplus / as sysdba无法登录的奇怪报错
查看>>
管理的艺术(转)
查看>>
java命令行HPROF Profiler(转)
查看>>