DAY13、迭代器,生成器,枚举
一、迭代器
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)]
DAY13、迭代器,生成器,枚举的更多相关文章
- python 全栈开发,Day13(迭代器,生成器)
一.迭代器 python 一切皆对象 能被for循环的对象就是可迭代对象 可迭代对象: str,list,tuple,dict,set,range 迭代器: f1文件句柄 dir打印该对象的所有操作方 ...
- python之迭代器 生成器 枚举 常用内置函数 递归
迭代器 迭代器对象:有__next__()方法的对象是迭代器对象,迭代器对象依赖__next__()方法进行依次取值 with open('text.txt','rb',) as f: res = f ...
- day13 python生成器函数 推导式 生成器
day13 python 一.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样. 取值方式和迭代器一样(__next__()) 由生成器函数或生成器表达式来创建 ...
- Learn day5 迭代器\生成器\高阶函数\推导式\内置函数\模块(math.time)
1.迭代器 # ### 迭代器 """能被next调用,并不断返回下一个值的对象""" """ 特征:迭代器会 ...
- Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化
本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解 ...
- Python 迭代器&生成器
1.内置参数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice ...
- python杂记-4(迭代器&生成器)
#!/usr/bin/env python# -*- coding: utf-8 -*-#1.迭代器&生成器#生成器#正确的方法是使用for循环,因为generator也是可迭代对象:g = ...
- Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式
目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...
- python 迭代器 生成器
迭代器 生成器 一 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前 ...
- Python_迭代器-生成器-复习-习题_41
# 迭代器和生成器# 迭代器 # 可迭代协议 —— 含有iter方法的都是可迭代的 # 迭代器协议 —— 含有next和iter的都是迭代器 # 特点 # 节省内存空间 # 方便逐个取值,一个迭代器只 ...
随机推荐
- 30.C++复习篇
本章学习内容: 1.const 2.指针const 3.inline内联函数 4.函数重载 5.extern “C” 6.new/delete声明与释放 7.namespace命名空间 8.C++中的 ...
- "PECS原则"几篇好文章
<? extends T>和<? super T>Java 泛型中的PECS原则(copy源码样例)
- Spring笔记04_AOP注解开发_模板_事务
目录 1. Spring基于AspectJ的注解的AOP开发 1. 1 SpringAOP的注解入门 1.2 Spring的AOP的注解通知类型 1.2.1 @Before:前置通知 1.2.2 @A ...
- vuex2中使用mapGetters/mapActions报错解决方法
解决方案 可以安装整个stage2的预置器或者安装 Object Rest Operator 的babel插件 babel-plugin-transform-object-rest-spread . ...
- Chrome 插件——二维码生成笔记
原来用了几个生成二维码的插件,总是遇见各种问题……最后索性自己弄一个,这里顺便记录一下. Chrome 插件很开放!!!你只要拿到了crx文件,然后把文件的后缀名改为zip,就可以解压了,最后一切的一 ...
- 访问vsts私有nuget
访问vsts私有nuget Intro 有时候我们可能要自己搭建一个 nuget,如果不对外公开,即包浏览也是需要权限的,那我们应该怎么做才可以支持在哪里都可以正常的还原包呢? 我是在 VSTS(Vi ...
- 商家APP店内点餐开启有桌台点餐模式
商家APP店内点餐开启有桌台点餐模式 步骤一:管理员后台-配置管理--店铺配置--简易付tab页--是否支持扫码下单-是 步骤二:管理员后台-配置管理--设备管理--选择对应的机器--配置--云POS ...
- MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现
一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在 ...
- mysql的定时器
mysql定时器是系统给提供了event,而oracle里面的定时器是系统给提供的job.废话少说,下面创建表: create table mytable ( id int auto_incremen ...
- Chinese word segment based on character representation learning 论文笔记
论文名和编号 摘要/引言 相关背景和工作 论文方法/模型 实验(数据集)及 分析(一些具体数据) 未来工作/不足 是否有源码 问题 原因 解决思路 优势 基于表示学习的中文分词 编号:1001-908 ...