博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python iter()的使用 迭代器 生成器的使用
阅读量:4654 次
发布时间:2019-06-09

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

废话不多说  直接上代码:

 

s=iter('12345')print 's.next(): ', s.next()print 'type(s.next()):' ,  type(s.next())print 's.next(): ', s.next()print 'type(s):' , type(s)dic ={ 'a':'c','b':'c'}d=iter(dic)print 'dic= ',dicprint 'type(d): ',type(d)print 'd.next(): ' ,d.next()

结果:

s.next():  1type(s.next()): 
s.next(): 3type(s):
dic= {'a': 'c', 'b': 'c'}type(d):
d.next(): a

  

 字典的迭代器会遍历他的键。

for eachKey in dict.keys():   ====== 等于=======for eachKey in dict

 

文件迭代器会自动调用readline()方法。

myFile = open(filename)

for eachline in myFile:

    print eachline

 

可变对象的迭代器,如列表、字典,使用时后不能更改元素的值。

列表解析: [len(word) for line in file for word in line.split()]

不足:列表解析必须生成所有的数据,用于创建整个列表,这可能会对有大量数据的迭代器有负面效应。

生成器表达式 可以通过列表解析和生成器解决这个问题。

生成器并不真正创建数字列表,二是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目"产生(yeild)"出来。生成器表达式使用了”延迟计算(lazy evaluation)“,所以它在使用内存上更有效。

与列表解析在形式上的差别仅在于一个是[]一个是()。

 生成器表达式:

   max(len(x.strip()) for x in open(file))

生成器:

   从语法上讲,生成器是一个带yield语句的函数。一个函数或者子程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果——那就是yeild语句的功能,返回一个值给调用者并暂停执行。当生成器的next()的方法被调用的时候,它会准确地从离开的地方继续。

 

转载于:https://www.cnblogs.com/TianMG/archive/2013/05/25/3098429.html

你可能感兴趣的文章
java应用CPU占用100%内存泄漏分析总结(转载)
查看>>
我收藏的技术知识图(每张都是大图)
查看>>
2016 - 1 - 3 国旗选择demo
查看>>
百度地图demo
查看>>
面向对象
查看>>
浅析HashSet 与 HashMap
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...
查看>>
空间复杂度
查看>>
jQuery学习-访问设置元素内容
查看>>
scala下划线的作用
查看>>
20169205 2016-2017-2 实验三 缓冲区溢出漏洞实验
查看>>
spring开发的总结
查看>>
ExtJS学习之路第五步:认识最常见组件Panel
查看>>
javascript的设计模式(三)———— 原型模式
查看>>
NGUI用UIGrid加载Item会有部分空出来的解决办法
查看>>
hdu 5365 Run
查看>>
绝对兼容的,简单易用的,滚动翻看图片功能!
查看>>
JAVA-初步认识-第三章-语句-if格式3
查看>>
JAVA-初步认识-常用对象API(基本数据类型对象包装类-概述)
查看>>
关于Extjs MVC模式上传文件的简单方式
查看>>