浅谈python迭代器


Posted in Python onNovember 08, 2017

1、yield,将函数变为 generator (生成器)

例如:斐波那契数列

def fib(num):
  a, b, c = 1, 0, 1

  while a <= num:
    yield c
    b, c = c, b + c
    a += 1
for n in fib(10):
  print(n, end=' ')
# 1 1 2 3 5 8 13 21 34 55

2、Iterable

所有可以使用for循环的对象,统称为 Iterable (可迭代)

from collections import Iterable, Iterator
print(isinstance(fib(10), Iterable))
print(isinstance(range(10), Iterable))
# True
# True

3、Iterator

可以使用next() <__next__()> 函数调用并且不断返回下一个值的对象成为 Iterator (迭代器),表示一个惰性计算的序列。

list, dict, str是Iterable,不是Iterator:

from collections import Iterator
print(isinstance(list(), Iterator))
# False

但是可以通过iter()函数将其变为Iterator:

print(isinstance(iter(list()), Iterator))
# True

总结

以上就是本文关于浅谈python迭代器的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python好玩的项目—色情图片识别代码分享、Python实现一个简单的验证码程序、Python算法输出1-9数组形成的结果为100的所有运算式等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

Python 相关文章推荐
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
python通过ssh-powershell监控windows的方法
Jun 02 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
pyQt5实时刷新界面的示例
Jun 25 Python
如何通过python画loss曲线的方法
Jun 26 Python
django-csrf使用和禁用方式
Mar 13 Python
python re模块和正则表达式
Mar 24 Python
教你怎么用Python生成九宫格照片
May 20 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 Python
python生成excel的实例代码
Nov 08 #Python
Python 多核并行计算的示例代码
Nov 07 #Python
python判断字符串是否是json格式方法分享
Nov 07 #Python
python好玩的项目—色情图片识别代码分享
Nov 07 #Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 #Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 #Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 #Python
You might like
php 一元分词算法
2009/11/30 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
js DOM模型操作
2009/12/28 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
ES6中let 和 const 的新特性
2018/09/03 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
python简单分割文件的方法
2015/07/30 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
商场促销活动方案
2014/02/08 职场文书
中秋晚会策划方案
2014/06/12 职场文书
店铺转让协议书
2014/12/02 职场文书
个人求职自荐信范文
2015/03/06 职场文书
导游词书写之黄山
2019/08/06 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android