首页 > 其他 > 详细

可迭代对象和迭代器

时间:2020-11-12 21:35:32      阅读:26      评论:0      收藏:0      [点我收藏+]
 1 """
 2 可迭代对象包括迭代器、序列(字符串、列表、元组)和字典。
 3 可迭代对象:要么实现__iter__方法,返回该可迭代对象的迭代器类实例,要么实现了__getitem__方法,并且参数是从零开始的索引。
 4 迭代器:实现了__iter__方法,返回迭代器本身,且实现了__next__方法,返回下一个元素,若没有元素抛出StopIteration异常。
 5 """
 6 
 7 
 8 class MyList(object):                       # 定义可迭代对象类(__iter__方法)
 9     def __init__(self, num):
10         self.data = num
11 
12     def __iter__(self):
13         return MyListIterator(self.data)    # 返回该可迭代对象的迭代器类实例
14 
15 
16 class MyListIterator(object):              # 定义迭代器类(__iter__方法和__next__方法)
17     def __init__(self, data):
18         self.data = data
19         self.now = 0
20 
21     def __iter__(self):
22         return self                         # 返回迭代器本身
23 
24     def __next__(self):
25         while self.now < self.data:
26             self.now += 1
27             return self.now-1               # 返回下一个元素
28         raise StopIteration
29 
30 
31 def main():
32     my_list = MyList(5)
33     print(type(my_list))
34 
35     my_list_iter = iter(my_list)
36     print(type(my_list_iter))
37 
38     for i in my_list:
39         print(i)
40 
41 
42 if __name__ == __main__:
43     main()
44 
45 """
46 结果:
47 <class ‘__main__.MyList‘>
48 <class ‘__main__.MyListIterator‘>
49 0
50 1
51 2
52 3
53 4
54 """

 

可迭代对象和迭代器

原文:https://www.cnblogs.com/java-learning-xx/p/13965621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!