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

迭代器&可迭代对象

时间:2019-03-28 00:35:04      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:collect   iterable   判断   style   res   obj   div   rom   遍历   

迭代器

能够被next调用, 并不断返回值的一个对象
惰性排序, 一次只获取一个数据, (占用一个空间)
迭代器可以遍历无限量的数据

 

特点:

1.惰性序列, 节省内存

2.遍历使用next, 方向不可逆

3.迭代器可以遍历无限量大的数据

1. 可迭代对象

 1 # 判断是不是可迭代对象   
 2 # 使用dir(obj) 看是否实现__iter__
 3 setvar = {1, 2, 4, 5}
 4 print(__iter__ in dir(setvar))
 5 
 6 
 7 """
 8 把可迭代对象变成迭代器:
 9     iter(obj)   
10     obj.__iter__()
11 
12 迭代器调用的时候:
13     obj.__next__()  
14     next(obj)
15 """
16 # 方法一
17 iter1 = setvar.__iter__()
18 # 方法二
19 iter2 = iter(setvar)
20 
21 
22 # 调用的时候
23 iter1.__next__()
24 iter1.__next__()
25 iter1.__next__()
26 # next(iter1)   超出元素范围, 会报错

关于for循环:

1 for i in setvar:
2     print(i)
3     
4 # for 循环会把迭代对象变成迭代器, 然后调用next()

2.迭代器

 1 # 判断是不是迭代器  
 2 
 3 # 1.使用dir(obj)  有没有__next__
 4 print(__next__ in dir(iter1))
 5 
 6 # 2.使用isinstance
 7 from collections import Iterable, Iterator
 8 print(isinstance(iter1, Iterable))
 9 print(isinstance(iter1, Iterator))
10 
11 
12 
13 # 判断range的迭代属性
14 print(isinstance(range(5), Iterable))
15 print(isinstance(range(5), Iterator))
16 
17 
18 # 吧range变成迭代器
19 res = range(5).__iter__()
20 print(isinstance(res, Iterator))

 

迭代器&可迭代对象

标签:collect   iterable   判断   style   res   obj   div   rom   遍历   

原文地址:https://www.cnblogs.com/caihuajiaoshou/p/10611924.html

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