Python中迭代器的使用方法
作者:redrose2100   类别:    日期:2022-05-10 07:54:27    阅读:1013 次   消耗积分:0 分

1 Iterable,可迭代:

一个类实现了iter()函数,则这个类是可迭代的,通常iter()函数必须返回一个
实现了next()的类的对象,当然如果自己实现了next(),也可以返回自己

2 Iterator 迭代器:

同时实现了iter()和next()的对象,就是迭代器

  1. class Student():
  2. def __init__(self,name):
  3. self.name=name
  4. self.start=0
  5. def __iter__(self):
  6. return self
  7. def __next__(self):
  8. if self.start <len(self.name):
  9. result=self.name[self.start]
  10. self.start+=1
  11. return result
  12. else:
  13. raise StopIteration
  14. s=Student("Jack Macial")
  15. for elem in s:
  16. print(elem)

执行结果如下:

  1. J
  2. a
  3. c
  4. k
  5. M
  6. a
  7. c
  8. i
  9. a
  10. l

下面查看next函数的使用

  1. class Student():
  2. def __init__(self,name):
  3. self.name=name
  4. self.start=0
  5. def __iter__(self):
  6. return self
  7. def __next__(self):
  8. if self.start <len(self.name):
  9. result=self.name[self.start]
  10. self.start+=1
  11. return result
  12. else:
  13. raise StopIteration
  14. s=Student("Jack Macial")
  15. print(next(s))
  16. print(next(s))
  17. print(next(s))
  18. print(next(s))
  19. print(next(s))
  20. print(next(s))
  21. print(next(s))
  22. print(next(s))
  23. print(next(s))
  24. print(next(s))
  25. print(next(s))
  26. print(next(s))

执行结果如下:

  1. J
  2. a
  3. c
  4. k
  5. M
  6. a
  7. c
  8. i
  9. a
  10. l
  11. Traceback (most recent call last):
  12. File "G:/python_flask/test.py", line 29, in <module>
  13. print(next(s))
  14. File "G:/python_flask/test.py", line 15, in __next__
  15. raise StopIteration
  16. StopIteration
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/141
个人成就
  • 博客总数: 613 
  • 阅读总量: 762441 
  • 2022年 : 371 篇 
  • 2023年 : 211 篇 
  • 2024年 : 31 篇 
  • 2025年 : 0 篇 
测试开发技术全栈公众号
DevOps技术交流微信群