迭代对象这个概念是python里面非常核心的东西,我想跟大家分享一下,什么是可迭代对象。

比如我们有一个list1=[1,2,3],s='abc'

for n in list1:

print n

for c in s:

print c

其实list就是一个迭代对象,一般来说列表,字符串,可以放在for后面使用的,都是可以迭代的对象。那么为啥迭代的对象可以迭代呢。大家有没有想过这个问题,其实python里面一切皆对象。

我们一起看一个例子,比如我们用range(),range主要是处理整数,如果我们想处理float数怎么办,比如我想有一个FloatRange(0.0,1.0,0.2),起始0.0,终点1.0,步长0.2,那么功能函数该如何实现迭代器呢?

class FloatRange:def init(self,start,end,step=0.1):self.start=start self.end=end self.step=stepdef __iter__(self):

t=self.start

while t<=self.end:

yield round(t,2)

t+=self.step

(1)声明一个类FloatRange()

(2)初始化start,end和step

(3)写一个iter函数,for循环的时候就会自动调用,准确说是迭代的时候就会调用

for n in FloatRange(0.0,1.0,0.2):

print n

0.0 0.2 0.4 0.6 0.8 1.0

print list(FloatRange(0.0,1.0,0.2))[0.0,0.2,0.4,0.6,0.8,1.0]

[0.0,0.2,0.4,0.6,0.8,1.0]

那么。我为什么要和大家分享这个概念呢?我觉得弄懂这个概念对大家深入理解python之美很有帮助,此外,当你阅读别人代码时,如果有这个概念,会让你更容易理解。

最后,再介绍一下反向迭代器

l=[1,2,3,4,5] print(l[::-1])

#可以用[::-1] print(reversed(l))

#也可以用reversed关键字,生成一个反向迭代器对象,其实就是调用reversed内置函数

class FloatRange:

def init(self,start,end,step=0.1):

self.start=start

self.end=end

self.step=step

def __iter__(self):

t=self.start

while t<=self.end:

yield round(t,2)

t+=self.step

def __reversed__(self):

t=self.end

while t>=self.start

yield round(t,2)

t-=self.step

正向迭代:for x in FloatRange(1.0,2.0,0.3):print(x)

反向迭代:for x in reversed(FloatRange(1.0,2.0,0.3):print(x)

那么迭代器有什么妙用呢?

如果我们要读入一个几万行的文件,我们假设只需取100到200

方法一:readlines()函数

with open('/var/log/install.log','rb') as rf

lines=rf.readlines()

print lines[100:200]

这种方法比较暴力,而且比较浪费空间,试想一下,如果我们的文件有几个G大,那怎么办呢?

方法二:用迭代器切片。

from itertools import islice

with open('/var/log/install.log','rb') as rf:

for line in islice(rf,100,200):

print line.strip()

用标准库里的itertools.islice()返回一个生成器对象,这样读的时候是一点点读入内存空间,而不是一次性读入所有的。

python迭代对象是什么意思_python的迭代对象相关推荐

  1. python中可迭代对象是什么意思_python可迭代对象概念讲解

    python可迭代对象怎么理解 什么是可迭代对象? 简单的理解是可以用for循环的对象,就是可迭代对象.比如:list,字符串,dict,元组,生成器等. 具有可迭代的特征.(推荐学习:Python视 ...

  2. python的可迭代对象是什么意思_python可迭代对象和迭代器区别

    python内置迭代对象: 字符串,列表,元组,文件,字典 # 字符串迭代 str = "conding make me happy" for c in str: print(c, ...

  3. python中可迭代对象是什么意思_python中可迭代对象是什么

    python中可迭代对象是:存储了元素的一个容器对象,且容器中的元素可以通过"__iter__( )"方法或"__getitem__( )"方法访问.可迭代对象 ...

  4. python面对对象是什么意思_Python—面对对象(上)

    类--class 搞了好几天,不停地在网上找资料,终于搞懂类了. 类这个东西,其实我们一直在接触,Python里面自定义好的数据类型,str--字符串类,int--数字类,list--列表类..... ...

  5. python中的引用怎么理解_python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

  6. python 类可以调用实例变量_python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法...

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()& ...

  7. python的序列化是什么意思_python 什么是对象序列化

    我们知道在Python中,一切皆为对象,实例是对象,类是对象,元类也是对象.本文正是要聊聊如何将这些对象有效地保存起来,以供后续使用. pickle与cPickle pickle模块可以将Python ...

  8. python 判断数字序列是否合法_Python:检查对象是否是序列

    In python is there an easy way to tell if something is not a sequence? I tried to just do: if x is n ...

  9. python 判断是否有某个属性_python如何判断对象的某个属性

    在python判断某个对象是否具有某属性可以使用以下方法 方法一:通过异常捕捉来实现逻辑class FooClass: pass k = FooClass() try: #do some thing  ...

最新文章

  1. 人工智能艺术:一场前所未有的新艺术创造
  2. 《TCP/IP详解 卷一》读书笔记-----广播多播IGMP
  3. python绘制条形图-python matplotlib库绘制条形图练习题
  4. Common BeanUtils 简介
  5. Apache Camel 2.12 –支持后退,以减少较积极的轮询路线
  6. C++ 运算符优先级
  7. JMS之企业消息传送
  8. java解析excel文件处理数字成像_Java处理Excel工具,POI解析,使用InputStream读取文件...
  9. 检查电脑链接的网络是否支持ipv6
  10. Golang并发模式--channel高级使用
  11. mysql 使用异步io_InnoDB引擎之-异步IO(Async IO)
  12. 机器人系统数学建模(现代控制理论1)
  13. 为什么华为,腾讯,阿里等大公司都有外包员工?
  14. 完美世界暴力裁员:工作996、生病被关小黑屋,有摄像头监控!
  15. Android内部存储和外部存储以及缓存清理和内存清理!
  16. Hyperledger fabric-couchdb镜像版本的坑
  17. 自学单片机是否先学c语言,学习单片机需要先学好C语言再去学单片机吗
  18. C语言编程>第二十二周 ② 请补充fun函数,该函数的功能是:返回字符数组中指定字符的个数,指定字符从键盘输入。
  19. allergro音乐术语什么意思_音乐术语
  20. python-重难点知识汇总

热门文章

  1. 网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient...
  2. 毕业设计 基于stm32的灯光控制系统 物联网
  3. 使用Flutter开发Github客户端及学习历程的小结
  4. 360 mysql无法启动_mysql无法启动
  5. Spring Boot整合MyBatis框架(XML文件版)
  6. Android Studio 高德获取经纬度,定位
  7. linux下eeprom读写测试,本科毕业设计__基于linux的eeprom的读写控制.doc
  8. windows进程管理器_系统变慢?WMI进程导致的CPU高占用解决
  9. 【解决方案】windows7无法启动黑屏,报0xc000014c错误解决方案不用重新安系统
  10. 一起来看 Google 在中国国际进口博览会的精彩展示!