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

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

一、迭代器

1、通过迭代器取值的优缺点

      优点:不依赖索引取值,完成取值

      缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)

2、可迭代对象

      可迭代对象是有—iter—()方法的对象,调用该方法返回迭代器对象

       可迭代对象有:str | list | tuple | dict | set | range()| file | 迭代器对象 | enumrate()| 生成器

3、迭代器对象:

      迭代器对象:有—next—()方法的对象,也就是用该方法一次从迭代器对象中获取一个值,取出一个少一个

       迭代器对象有:file | enumerate()| 生成器

重点:

1、从迭代器对象中取元素,取一个少一个,如果啊哟从头开始取,需要重新获得拥有所有元素的迭代器对象

2、迭代器对象也有—iter—()方法,调用后得到的是自己本身(当前含义几个元素,得到的就只有几个元素的迭代器对象) 

4、for循环迭代优点

      自动获取被迭代对象的迭代器对象

      在内部一次一次调用—next—()方法取值

      自动完成异常处理

二、生成器

1、生成器:包含yied关键字的函数就是生成器

def my_generator():

            yield 1
            yield 2
             yield 3
g_obj = my_generator()

my_generator()并不会执行函数体,得到的返回值就是生成器对象

生成器对象就是迭代器对象

r1 = g_obj._next_()              #  1

for v in g_obj:

       print(v)                           #  2 |  3

2、生成器的应用案例

当访问的数据资源过大,可以将数据用生成器处理,一次获取所有内容的一条资源

def my_range(min, max=0, step=1):     if max == 0:         min, max = max, min     tag = min     while True:         if tag >= max:             break         yield tag         tag += step range_obj = my_range() range_obj = my_range(5,10,2) for i in range_obj:       print (i) 三、枚举对象 枚举对象:通过for迭代器循环遍历可迭代对象,需要知道迭代的索引 l = [1,3,5,7,9] for i, v in enumerate(l)       print(i,v)             #生成迭代器对象:[(0,1),(1,3),(2,5),(3,7),(5,9)]

转载于:https://www.cnblogs.com/yanminggang/p/10648892.html

你可能感兴趣的文章
我所认识的三层
查看>>
JavaEE——Spring4--(3)自动装配
查看>>
计算用字符串表示的公式
查看>>
CSS布局
查看>>
mfc自动创建按钮消息处理并清除
查看>>
通过js子页面回写父页面,改变父页面控件的值
查看>>
Django 静态文件配置(static files)
查看>>
C++日志库,log4cplus,log4cpp使用资料手册
查看>>
SQL命令中的case...when...then...else...end条件查询
查看>>
【原】Mysql常用语句
查看>>
高级UI-UI绘制流程
查看>>
linux 把用户加入一个组&从这个组中移除
查看>>
Android开发之Fragment传递參数的几种方法
查看>>
Android开发更新UI的几种方式
查看>>
【Tools】linux更改分辨率,解决虚拟机安装后太小的问题
查看>>
u盘引导制作工具
查看>>
three.js贴图
查看>>
Linux kernel 之 socket 创建过程分析
查看>>
Linux 系统串口信息查看
查看>>
Codeforces Round #207 (Div. 1) A. Knight Tournament(STL)
查看>>