python-生成器和迭代器
时间:2019-06-17
本文章向大家介绍python-生成器和迭代器,主要包括python-生成器和迭代器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
x="hello" #print(dir(x)) iter_test=x.__iter__() #print(iter_test) # print(iter_test.__next__()) # print(iter_test.__next__()) #可迭代对象就是迭代器 l=[1,2,3] # for i in l:#先执行i=l.__iter__() ,i.__next__() for循环基于迭代器协议, # 能被for循环遍历的类型必须具有__iter__方法 # print(i) #print(l[0]) # iter_l=l.__iter__()#遵循可迭代协议,生成可迭代对象 # print(iter_l.__next__()) # #
#遵循可迭代协议的数据类型有list,set,dict,str,tuple,和文件操作 # l=[1,2,3] # for i in l: # print(i) # # # # index=0 # while index<len(l): # print(l[index]) # index+=1 # s={1,2,3} # for i in s: # print(i) # iter_s=s.__iter__() # print(iter_s) # print(iter_s.__next__()) # print(iter_s.__next__()) # print(iter_s.__next__()) # dic={'a':1,'b':2} # iter_d=dic.__iter__() # print(iter_d.__next__()) # f=open('code.txt','r+') # # for i in f: # # print(f) # iter_f=f.__iter__() # print(iter_f) # print(iter_f.__next__(),end='') # print(iter_f.__next__(),end='') #t=["tang","han","xiao"] #iter_t=iter(t) # iter_t=t.__iter__() # print(iter_t.__next__()) # #next 方法 ---->iter_t.__next__() # print(next(iter_t)) #生成器就是可迭代对象 #生成器函数 # def test(): # yield 0 # yield 1 # yield 2 # yield i # g=test() # i=10 # print(test()) # print(g.__next__()) # print(g.__next__()) # print(g.send(i)) # print(g.__next__()) #三元表达式 # name="alex" # res='SB' if name=="alex" else "帅哥" # print(res) #列表解析 # egg_list=[] # for i in range(10): # egg_list.append("鸡蛋%s"%i) # print(egg_list) # a=["鸡蛋%s"%i for i in range(10)] # #a1=["鸡蛋%s"%i for i in range(10) if i>5]#三元表达式 # print(a) #生成器表达式 laomuji=a=("鸡蛋%s"%i for i in range(10)) print(laomuji) print(laomuji.__next__()) print(laomuji.__next__()) print(next(laomuji))
# def test():
# yield 1
# yield 2
# yield 3
# g=test()
# print(g)
# print(g.__next__())
#yield: 1.用来做返回值 2.保留函数的运行状态
#母鸡下蛋
# def egg():
# egg_list=[]
# for i in range(100):
# egg_list.append("鸡蛋%s"%i)
# return egg_list
# print(egg())
#缺点:占用空间大,效率低
def egg():
for i in range(100):
yield "鸡蛋%i" % i
ret=egg()
print(ret.__next__())
print(ret.__next__())
print("xxxxxx")
# for jidan in ret:
# print(jidan)
原文地址:https://www.cnblogs.com/tangcode/p/11042528.html
- SpringMVC【开发Controller】详解
- 巧用外部表备份历史数据(r5笔记第62天)
- Github 项目推荐 | 最小化类 AlphaGo Zero 引擎 —— Nochi
- 半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
- Spring【DAO模块】知识要点
- 浅谈exp/imp(上) (r5笔记第81天)
- Java高并发秒杀系统【观后总结】
- 【专业技术】引擎算法探究
- 阅读SSM项目之scm
- 阅读SSH项目之ERP
- Hybris商品图片导入与压缩有关的配置
- 一条sql语句的建议调优分析(r5笔记第73天)
- O API - REST APIs的替代品
- 【专业技术】从4行代码看右值引用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搭建分布式文件系统FastDFS
- Presto Web UI
- Leetcode No.5 最长回文子串
- Python的循环、判断和各种表达式(长文系列第二篇)
- Java内存泄漏、性能优化、宕机死锁的N种姿势
- 从2.9秒到0.6秒,信息流首屏提效80%的秘诀
- 移植nodejs到嵌入式linux,让终端支持可使用js做些功能
- go语言版串口获取银商秘钥工具
- dotnet Microsoft.Recognizers.Text 超强大的自然语言关键词提取库
- Java 基础面试总结
- 银商TMS平台秘钥下载工具
- 小白向:Linux vim编辑器(一)
- 2020数据库面试题
- 银商TMS平台秘钥自动下载并形成文件工具
- top100习题