python——函数17 、迭代器(一)

什么是迭代器?

答:重复,下一次的输出是基于上一次的结果

列子:

i=[1,2,3,4]
count=0
while count<len(i):
    print(i[count])
    count+=1
View Code

索引

i={'a':1,'b':2,'c':3}
for k in i:
    print(k)
View Code

通常以前都会去用索引取值,现在有了一个可以不依赖索引取值的方法, python里有内置的迭代方法: X.__iter__   这个X是什么?  X可以是 字典、列表、字符串、集合、元组、文件。

这个X.__iter__就称为迭代的对象(也就是说当可以用迭代的方法时就称为可迭代对象 ), 输出的结果就称为迭代器 

当你已经成功的写出一个迭代器 那么就一定会再有一个__next__的这个方法,请看下面的代码:

i={'a':1,'b':2,'c':3}
a=i.__iter__()
b=a.__next__()
View Code

很显然 这个a就是一个迭代器  那么就可以接着写b 但是不可以直接a=i.__next__()这是错误的 next(然后)的意思 你都没有第一次 那么就不会有然后

i={'a':1,'b':2,'c':3}
a=i.__next__()

#######错的 错的 错的 #####
View Code

完整的迭代器:

i={'a':1,'b':2,'c':3}
a=i.__iter__()
print(a.__next__())
print(a.__next__())
print(a.__next__())
View Code

如果你的print多于变量的数量 那么就会StopIteration报错

总结:

迭代器的优点:

1、不依赖于索引取值

2、节省内存  (迭代器本身就是一个内存地址,管你有几十万,几百万的值,你写几个next就取出几个值)

迭代器的缺点:

1、取值麻烦

2、不可逆,也就是只能一直next往后取值 不可以往回取值

原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9334312.html