zoukankan      html  css  js  c++  java
  • Python 迭代对象、迭代器

    1. Python中 一切皆对象

      只要对象内部 含有 --iter--方法 即为可迭代对象,可以使用 dir 方法查看该对象的所有方法。

      l1 = [1,2,3]
      '__iter__' in dir(li)	#True
      

      可迭代优点:

      1. 存储的数据能直接显示,比较直观
      2. 拥有的方法比较多,操作方便

      缺点:

      1. 占用内存。

      2. 可迭代对象不能直接取值 不能直接通过For 循环 (转换为迭代器后可以使用 内部转换)

    2. 迭代器

      迭代器的定义(字面意思):更新迭代,器:工具

      专业角度:内部含有 ‘iter'方法 并且含有 'next'的方法的对象就是迭代器。

      文件句柄 为 迭代器。

      可迭代对象 可以 转换为 迭代器

      s1 = 'panda'
      obj = iter(s1)	#转换为迭代器 == s1.__iter__
      print (next(obj))	#取迭代器值 
      

      迭代器优点:

      1. 节省内存。

      2. 惰性机制:next一次 取一个值 绝不多取

        迭代是数据处理的基石,扫描内存中放不下的数据集时,我们要找到一种获取数据项的方式,即按需一次获取一个数据项,这就是迭代器模式。

      迭代器缺点:

      1. 速度满
      2. 不走回头路

      可迭代对象与迭代器的对比:

      可迭代对象是一个操作方法比较多,比较直观 ,存储数据相对少(几百万个对象,8G内存可以承受)的 一个数据集

      ​ 当你侧重于对数据可以灵活处理,并且内存足够,将数据集设置为可迭代对象。

      迭代器是一个非常节省内存,可以记录取值位置,可以直接通过循环+next方法取值,但是不直观,操作方法比较单一的数据集。

      应用:当你的数据量 过大 ,大到足以超出内存 或者你以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。

  • 相关阅读:
    bash shell if 命令参数说明
    Linux test命令
    javascript获取事件触发源
    PHP Manual 学习
    js 控制iframe 刷新
    WP7交互特性浅析及APP设计探究
    FirstDayStart点点
    关于Safari的思考(转载)
    如何使控件背景色支持TransparentKey(at Win2k/WinXP 32bit Color Desktop)
    [Bug] VisualStyleRenderer may cause GDI leak!
  • 原文地址:https://www.cnblogs.com/pandaa/p/12035641.html
Copyright © 2011-2022 走看看