码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器

时间:2018-06-12 10:25:12      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:div   ble   包含   获取   统一   迭代器   code   set   obj   

 

一、可迭代对象

可以直接作用于for循环的对象统称为可迭代对象,即iterable

1、常见的可迭代对象

常见迭代对象:str list tuple dict set range

 

2、判断可迭代对象的方法

方式一:dir(对象)

如果含有__iter__,那这个对象就叫做可迭代对象

str1=hello
print(__iter__in dir(str1))#True

li=[alex,sb]
print(__iter__in dir(li))#True

num=2018
print(__iter__in dir(num))#Flase

 

方式二:isinstance()方法

from collections import Iterable
str1=hello‘#字符串为可迭代对象
print(isinstance(str1,Iterable))#True

li=[alex,hehe]#列表为可迭代对象
print(isinstance(li,Iterable))#True

num=2018
print(isinstance(num,Iterable))#False

二、迭代器

对于序列类型:字符串列表元组,我们可以使用索引的方式迭代取出其包含的元素。但对于字典、集合、文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖索引的迭代方式,这就是迭代器

可迭代对象执行obj.iter()得到的结果就是迭代器对象

迭代器对象指的是即内置有__iter__又内置有__next__方法的对象

1、可迭代对象转换迭代器

str1=ABC
strIter=str1.__iter__()#得到迭代器对象,迭代器对象即有__iter__又有__next__
print(strIter)#结果为迭代器
print(strIter.__next__())
print(strIter.__next__())
print(strIter.__next__())

2、迭代器的优缺点

优点:

  提供一种统一的、不依赖于索引的迭代方式

  惰性计算,节省内存

缺点:

  无法获取长度(只有在next完毕才知道到底有几个值)

  一次性的,只能往后走,不能往前退

迭代器

标签:div   ble   包含   获取   统一   迭代器   code   set   obj   

原文地址:https://www.cnblogs.com/z-x-y/p/9171681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!