Python_迭代器和生成器的复习_38
迭代器和生成器
迭代器:
双下方法:很少直接调用的方法,一般情况下,是通过其他方法触发的
可迭代的协议——可迭代协议 含有__iter__ 的方法 ('__iter__' in dir(数据))
可迭代的一定可以被for循环
迭代器协议:含有 __iter__ 和 __next__ 方法
迭代器一定可以迭代, 可迭代的通过调用 __iter__() 方法就能得到一个迭代器
迭代器的特点:
很方便的使用,一个迭代器只能从前往后,取一次
节省内存空间
生成器:
生成器的本质就是迭代器
生成器的表现形式
生成器函数
生成器表达式
生成器函数:
含有yield关键字的函数就是生成器
特点:
调用函数之后函数不执行,返回一个生成器
每次调用next方法的时候回取到一个值
直到取完最后一个,再执行next的话就会报错
写生成器实现:有一个文件,从文件里分段读取内容
readline
read(10)
在读出来的内容前面加上一个 '***',再返回给调用者
def generator():
for i in range(20):
yield '哇哈哈%s'%i g = generator() #调用生成器函数得到一个生成器
print(list(g)) #数据类型的强制装换 生成器转化为列表
#ret = g.__next__() #每一次执行g.__next__就是从生成器中取值,预示着生成器函数中的代码继续执行 #print(ret) g1 = generator() num = 0 for i in g1: num += 1 if num > 50: break print(i) # 从生成器中取值的几个方法 # next # for # 数据类型的强制转换 : 占用内存
# 从生成器中取值的几个方法
# next
# for
# 数据类型的强制转换 : 占用内存
Python_迭代器和生成器的复习_38的更多相关文章
- Python_迭代器、生成器、列表推导式,生成器表达式
1.迭代器 (1)可迭代对象 s1 = ' for i in s1: print(i) 可迭代对象 示例结果: D:\Python36\python.exe "E:/Python/课堂视频/ ...
- python_迭代器和生成器
迭代器和生成器 1.迭代器 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比 ...
- python_迭代器和生成器、字节串、字节数组
迭代器 iterator 和 生成器 generator 什么是迭代器:迭代器就是获取迭代对象中元素的工具,迭代器是由可迭代对象生成的 1.迭代器是指用iter(可迭代对象)函数返回的对象(实例) ...
- Python_迭代器与生成器
迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...
- Python_迭代器-生成器-复习-习题_41
# 迭代器和生成器# 迭代器 # 可迭代协议 —— 含有iter方法的都是可迭代的 # 迭代器协议 —— 含有next和iter的都是迭代器 # 特点 # 节省内存空间 # 方便逐个取值,一个迭代器只 ...
- Python复习笔记(八)迭代器和生成器和协程
1. 迭代器 1.1 可迭代对象 判断xxx_obj是否可以迭代 在第1步成立的前提下,调用 iter 函数得到 xxx_obj 对象的 __iter__ 方法的返回值 __iter__ 方法的返回值 ...
- Python 从零学起(纯基础) 笔记 之 迭代器、生成器和修饰器
Python的迭代器. 生成器和修饰器 1. 迭代器是访问集合元素的一种方式,从第一个到最后,只许前进不许后退. 优点:不要求事先准备好整个迭代过程中的所有元素,仅仅在迭代到某个元素时才计算该元素,而 ...
- Python之模块,迭代器与生成器
本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器: ...
- Python之迭代器和生成器
Python 迭代器和生成器 迭代器 Python中的迭代器为类序列对象(sequence-like objects)提供了一个类序列的接口,迭代器不仅可以对序列对象(string.list.tupl ...
随机推荐
- 卸载时候出现: windows installer 程序有问题。此安装需要的dll不能运行 的一个解决方法
卸载时候出现: windows installer 程序有问题.此安装需要的dll不能运行 安装Your Uninstaller来卸载
- List删除
使用for循环,倒序删除: ; i >= ; i--) { var item = list[i]; ") { list.Remove(item); } }
- c/c++ 函数模板初探
函数模板初探 1,由来:有时候,函数的逻辑是一样的,只是参数的类型不同,比如下面 int Max(int a, int b){ return a > b ? a : b; } double Ma ...
- Windows Server 2016-管理站点复制(二)
为了保持所有域控制器上的目录数据一致和最新,Active Directory 会定期复制目录更改.复制根据标准网络协议进行,并使用更改跟踪信息防止发生不必要的复制,以及使用链接值复制以提高效率. 本章 ...
- 重启Zabbix Server
重启zabbix server:systemctl restart zabbix-server #启动服务 systemctl start zabbix-server systemctl start ...
- docker往阿里云推镜像和打包镜像
向仓库推镜像 1. 登录到阿里云docker镜像站点,然后创建仓库. 2.要按照阿里云官方给定的仓库名称来使用,所以我们一般都要继续给准备要上传的镜像二次添加标签,如下所示: 3.在终端登录阿里云站点 ...
- 4.9Python数据处理篇之Matplotlib系列(九)---子图分布
目录 目录 前言 (一)subplot()方法 ==1.语法说明== ==2.源代码== ==3.输出效果== (二)subplot2grid方法 ==1.语法说明== ==2.源代码== ==3.展 ...
- Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...
- Redis学习笔记--Redis数据过期策略详解
本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...
- Java 8 新特性:2-消费者(Consumer)接口
(原) 在上一篇,用到过这样一个方法: list.forEach(new Consumer<Integer>() { @Override public void accept(Intege ...