晓晓--python的迭代器

1. 什么是迭代器 ?---迭代器---是一种可以逐一获取集合的元素的对象,是一个可以记住遍历位置的对象,迭代器对象从集合中的第一个元素开始访问,直到所有的元素被访问完,迭代器访问元素只能依次往前访问,不可往后退即不可逆访问;

2. 获取到迭代器的方法  1) iterator1=iter(iterable);   2)iterator1=iterable_object.__iter__();   不管是方法1还是方法2,前提都是对象实现了迭代器方法;

3. 访问迭代器中元素 ----得到迭代器之后,怎么访问数据呢?

  方法1: next()方法 ,ret=next(iterator1) ,每次调用next方法,都会得到一个元素 ;已经是最后一个元素的时候,再调用next()方法,会报错,StopIteration exception ,表示已经是最后了,不可以再继续遍历了;

  方法2:iterator1.__next__();

  方法3:直接使用for循环 

    for item in iter1:
print(iter1.__next__())

4. 除了上述方法,也可以自己写迭代器  

方法1--使用生成器:

def my_itor():
for i in range(100):
yield i*i
ite1=my_itor() #调用函数获取到一个迭代器
print(next(ite1)) #调用next方法获取元素
print(next(ite1))
print(next(ite1))
print(next(ite1))

方法2--使用for循环:
iter2=(i*2 for i in range(100))
print(next(iter2))
print(next(iter2))
print(next(iter2))
print(next(iter2))
print(next(iter2))
5. 为什么要使用迭代器? ---通用的说法是迭代器不是一次性把数据读入内存,是使用多少拿多少,节省内存;之前看到过一个例子很形象,所以写下来方便自己理解;
比如你开了一家卖衣服的商店,然后呢你向工厂订购了一批衣服,比如你订了10万件;
方法1:----是你让生产厂家给你一次性生产完,然后你顾一个超级大货车給拉回来放在你的商店的仓库里,十万件衣服啊,那得好大一个仓库吧?如果你没那么大个仓库还比较麻烦;
方法2:----你跟生产厂商签署了一个合同,10万件衣服的合同单,你拿到的是那个你和商家的都承认的合同单,然后和商家约定好,我不需要一次生产10万件,我每次需要多少件的时候
我就来你们工厂找你订,你就给我生产,比如我每次来了就拿个200件,等我卖完了我就再过来拿;然后你就卖完一批那一批,直到拿完为止;这样你就不需要搞一个非常大的仓库了;


posted on 2022-09-05 10:46  ClareBaby01  阅读(28)  评论(0编辑  收藏  举报