-
Python中 一切皆对象
只要对象内部 含有 --iter--方法 即为可迭代对象,可以使用 dir 方法查看该对象的所有方法。
l1 = [1,2,3] '__iter__' in dir(li) #True
可迭代优点:
- 存储的数据能直接显示,比较直观
- 拥有的方法比较多,操作方便
缺点:
-
占用内存。
-
可迭代对象不能直接取值 不能直接通过For 循环 (转换为迭代器后可以使用 内部转换)
-
迭代器
迭代器的定义(字面意思):更新迭代,器:工具
专业角度:内部含有 ‘iter'方法 并且含有 'next'的方法的对象就是迭代器。
文件句柄 为 迭代器。
可迭代对象 可以 转换为 迭代器
s1 = 'panda' obj = iter(s1) #转换为迭代器 == s1.__iter__ print (next(obj)) #取迭代器值
迭代器优点:
-
节省内存。
-
惰性机制:next一次 取一个值 绝不多取
迭代是数据处理的基石,扫描内存中放不下的数据集时,我们要找到一种获取数据项的方式,即按需一次获取一个数据项,这就是迭代器模式。
迭代器缺点:
- 速度满
- 不走回头路
可迭代对象与迭代器的对比:
可迭代对象是一个操作方法比较多,比较直观 ,存储数据相对少(几百万个对象,8G内存可以承受)的 一个数据集
当你侧重于对数据可以灵活处理,并且内存足够,将数据集设置为可迭代对象。
迭代器是一个非常节省内存,可以记录取值位置,可以直接通过循环+next方法取值,但是不直观,操作方法比较单一的数据集。
应用:当你的数据量 过大 ,大到足以超出内存 或者你以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。
-