迭代器

标签: 迭代器 迭代对象
3人阅读 评论(0) 收藏 举报
分类:

迭代器


一. 可迭代对象

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

1. 常见的可迭代对象

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

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

方式一:dir(对象)

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

str1 = 'hello'                      #字符串为可迭代对象
print('__iter__' in dir(str1))

li = ["alex","野模"]                 #列表为可迭代对象
print('__iter__' in dir(li))

num = 2018
print('__iter__' in dir(num))


计算结果:

True
True
False
方式二:isinstance()方法
from collections import Iterable 

str1 = 'hello'                      #字符串为可迭代对象
print(isinstance(str1,Iterable))

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

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


计算结果:

True
True
False

二. 迭代器

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

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

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

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

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


计算结果:

<str_iterator object at 0x10e4f3518>
A
B
C

2. 迭代器的优缺点

优点:

  • 提供一种统一的、不依赖于索引的迭代方式
  • 惰性计算,节省内存

缺点:

  • 无法获取长度(只有在next完毕才知道到底有几个值)
  • 一次性的,只能往后走,不能往前退
查看评论

彻底掌握 Javascript(十九)Iterator 迭代器【专家辅导】

ES6 引入了 Iterator 迭代器,这是很重要的特性,所有相关javascript的类,都实现了这个接口,从而可以利用 for-of 来循环,具体的看课程吧,很有用的特性。
  • 2017年06月30日 20:59

匿名方法、迭代器 匿名方法、迭代器

  • 2008年12月17日 08:36
  • 8.83MB
  • 下载

C++迭代器简介:C++迭代器

  • 2010年08月24日 09:06
  • 16KB
  • 下载

STL迭代器类型

  • 2012年08月15日 09:34
  • 65KB
  • 下载

迭代器Iterator.txt

  • 2011年07月31日 16:53
  • 6KB
  • 下载

C/C++迭代器使用详解

迭代器是一种检查容器内元素并遍历元素的数据类型。
  • u013171165
  • u013171165
  • 2014-06-23 11:00:17
  • 10087

php中的迭代器Iterator的具体用法

php中的迭代器Iterator的具体用法。 一,最简单的迭代形式 foreach语句 1,foreach 可以用于数组, 例如: 复制代码代码示例: foreach ($arr as $key=>...
  • senlin1202
  • senlin1202
  • 2016-03-04 09:55:32
  • 2886

输入迭代器和输出迭代器的使用

STL模板库中迭代器的使用 #include #include #include #include using namespace std; //将来自输入迭代器的n个T类型的数值排序,将结...
  • u013232740
  • u013232740
  • 2015-07-02 09:04:38
  • 1210

c++迭代器介绍

迭代器的简介 (1):迭代器类似于指针类型,它也提供了对对象的间接访问。 (2):指针是c语言中就有的东西,迭代器是c++中才有的,指针用起来灵活高效,迭代器功能更丰富些。 (3):迭代器提供一...
  • qq_35644234
  • qq_35644234
  • 2016-08-26 21:53:13
  • 16980

C++迭代器理解与实例详解

定义一个数组:char buff[1024];当我们用指针char *p(char *p = buff)遍历数组时,指针p指向一维数组首元素地址,每次都是从数组第一个元素的偏移到指定位置,即进行指针...
  • HappyToEat
  • HappyToEat
  • 2016-11-13 09:23:25
  • 1736
    个人资料
    等级:
    访问量: 0
    积分: 12
    排名: 0
    文章存档