迭代器(lterator)
什么是迭代?
迭代是访问集合元素的一种方式,简单的来说:就是一种取数据的一种方式,在上一个基础上取下一个
可迭代对象
想要了解什么是迭代器之前必须要先了解什么是可迭代对象。
通俗的认为:只要可以通过for in 的形式呢进行遍历的,那么这个数据类型就是可以迭代的,可以迭代的数据类型有列表、元组、字典、字符串,不可迭代类型有数字类型、布尔类型、浮点型。
不是所有的数据类型都可以放到for循环语句中,然后让for循环每次从中取出一条数据供我们使用!
判断一个实例化对象是否可以迭代
导入lterable类: 它是一个类,所有可迭代数据都是它实例化对象(可迭代对象)
运用isinstance方法来判断是不是一个类得得实例化对象(判断一个数据是否可迭代)
运行结果会返回一组布尔值
# 导入Iterable
from collections.abc import Iterable
# isinstance(要判断的对象, Iterable)
print(isinstance([1, 2, 3], Iterable)) # True
什么是迭代器呢?
迭代器:是访问可迭代对象的工具,简单的理解:可以用for循环依次取数据的“特殊对象”。
作用:迭代器是一个可以记住遍历的位置的对象。(迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束。ps:迭代器只能往前不能后退)。
如何获取一个迭代器
iter(iterable)方法:从可迭代对象中返回一个迭代器,这里的iterable必须是能提供一个迭代器的对象。
获取迭代器里面的数据
next(iterator):从迭代器iterator中获取下一条记录,如果无法获取下一条记录,则触发stoptrerator异常。(注意:next一次只能获取一条数据)
自定义一个可迭代的对象
我们知道在一个普通class定义的对象是不能使用for的,那怎样让它可以使用for呢?要保证它是迭代器即可。
只要在类中定义定义2个特殊的魔法方法。
- __iter __:只要在类中创建出来的对象,一定是可迭代的对象(简单理解:只要对象里具备了__iter __方法,就是可迭代对象)
- __next __ :通过__iter __标志识别这是一个可迭代的类,继而自动调动__next__方法
注意:一个实现类 iter方法和next方法的对象,就是一个迭代器
小总结
- 普通的对象没有可以直接用for循环变量的功能
- 如果想要一个对象可以用for ,那么就需要让它变成迭代
- 一个类创建对象想要成为迭代器对象,需要两个魔法方法(__iter __, __next __ )。
- __next __返回真正的数据
这是小编第一章博客,也是小编第一次写博客,博客里面有些写的不够好地方和有误的地方也希望大家评论指出来,让小编做得更好!谢谢你们啦!