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方法取值,但是不直观,操作方法比较单一的数据集。

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

原文地址:https://www.cnblogs.com/pandaa/p/12035641.html