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 ...
 
随机推荐
- 如何获取Azure AD tenant的tenant Id?
			
一般情况下,Azure AD用户知道自己tenant域名,因为域名是账户的后缀,例如:contoso.onMicrosoft.com.如果你还不了解什么是Azure AD tenant,可 ...
 - 将DataTable中的数据一次性提交到数据库中
			
实现功能的核心代码 SqlConnection destinationConnection = new SqlConnection(connectionString);destinationConne ...
 - 利用python搭建Powersploit powershell脚本站点
			
powershell脚本站点的搭建 一.Powersploit Powersploit是一款基于powershell的后渗透(Post-Exploitation)框架,集成大量渗透相关模块和功能. 下 ...
 - 优雅的使用Spring
			
Bean声明的三种方式: 1.@Component, @Service, @Repository,@Controller 用于声明一个组件,程序启动时会扫描这些组件,并创建实例. 2.在applica ...
 - 使用epoll实现聊天室功能,同时比较epoll和select的异同
			
1.首先介绍一下select和epoll的异同,如下(摘抄自https://www.cnblogs.com/Anker/p/3265058.html) select的几大缺点: (1)每次调用sele ...
 - maven中可以直接引用的java系统属性和环境变量属性
			
一.查看命令: 1 mvn help :system 二.引用 在pom文件中通过 ${变量名}来引用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
 - vue-引入外部js文件的方法和常量
			
1.方法调用 a: js文件(static/js/public.js) //函数的定义 返回上一页 export function goback(laststep) { laststep } b: ...
 - Linux之权限详解
			
如何知道你有什么权限 我能干什么?这是我最关心的问题! 切换到普通用户 [root@luffy-01 ~]# su - pizza [pizza@luffy-01 ~]$ ls /root ls: c ...
 - 利用filter替换字符串中的空格
			
s = "abc def ghi xy" print(','.join(filter(lambda x: x, s.split(' '))))
 - 【ES6】import, require,export
			
node编程中最重要的思想就是模块化,import和require都是被模块化所使用. 遵循规范 require 是 AMD规范引入方式 import是es6的一个语法标准,如果要兼容浏览器的话必须转 ...