Python之迭代器

Python之迭代器

   迭代器的作用:用来做迭代。(我擦,好似废话一般的存在!!!)可以不用for和while循环,遍历数据类型的元素,拿取元素也不需要索引。

   迭代是在描述一个重复的过程。那么问题来了,啥子东西是重复的哩。for and while。

   类似循环一样,将有序数据类型的数据,按索引值,顺序取来,来呀来呀来呀!

   但是呀,重点来了,but。有序数据类型可以用循环来有序的挨个的取出来,可以无序的也想出来,咋办。  

   所以说,亲:迭代器了解下,服务周到,安全可靠。

   迭代器功能的发挥场所:

      用是有前提的。Python解释器为可以被迭代的数据类型,都设了一个 __iter__ 方法。只有有iter方法的数据类型,才可以用。

      有__iter__ 方法的,就叫做可迭代对象。      

d = {"a":2,"b":8,"l":4,}
d.__iter__()    #只要有iter方法,就是可以迭代的。    d.__iter__() == iter(d)

      执行d.__iter__ ,是它赋予变量任何,比如H,这个H就是迭代器,亲。

      一旦有了H。就可以在H里用next方法。next,就是下一个嘛。他就可以是迭代器一个一个的出值,听着是不是有点便秘。哈哈哈哈哈。

      但是,next是有限的。你的数据类型里有多少元素,就可以next多少下,超出的话,会报一个超出范围的错。也可以说是一个结束信号的红字提示。

      迭代器提供了一种不依赖索引值取值的方式,这样就可以遍历那些没有索引值的可迭代对象,比如文件,字典,集合。

      

    迭代器,比数据类型要更节省内存。迭代器是每next一下,才出一个值。相比列表什么的,一下子将数据放入内存相比。相当省空间。所以呀。迭代器是惰性计算。

凡事有利有弊:

  迭代器的缺点是:

    1.在知道要去某一位置的值时,迭代器要先迭代出之前的,才能拿到值。这点就不如列表。

    2.迭代器无法获取长度。无法知道被迭代的对象有多少元素。

    3.迭代器只能一次性的往后取值,无法取上一个值。

用  from collections import Iterable,Iterator 的两个方法,可以查看可迭代对象和迭代器对象。

from collections import Iterable,Iterator

s='hello'
l=[1,2,3]
t=(1,2,3)
d={'a':1}
set1={1,2,3,4}
f=open('a.txt')

#都是可迭代的
# s.__iter__()
# l.__iter__()
# t.__iter__()
# d.__iter__()
# set1.__iter__()
# f.__iter__()
# print(isinstance(s,Iterable))
# print(isinstance(l,Iterable))
# print(isinstance(t,Iterable))
# print(isinstance(d,Iterable))
# print(isinstance(set1,Iterable))
# print(isinstance(f,Iterable))

#查看是否是迭代器
print(isinstance(s,Iterator))
print(isinstance(l,Iterator))
print(isinstance(t,Iterator))
print(isinstance(d,Iterator))
print(isinstance(set1,Iterator))
print(isinstance(f,Iterator))

  Iterable 是否可迭代   返回布尔值。

  Iterator 是否是迭代器,返回布尔值。

原文地址:https://www.cnblogs.com/george92/p/9040165.html