python学习笔记(7)迭代器和生成器
2021/8/7 17:08:19
本文主要是介绍python学习笔记(7)迭代器和生成器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 可迭代对象: # 类型中申明了一个__iter__方法,同时该方法返回一个迭代器对象 # 能够用for循环的都是可迭代对象 # 列表、元组、字典、集合都是可迭代对象 # 迭代器: # 类型中申明了一个__next__方法 # for循环原理 # (1) 调用 in 后面对象的__iter__方法,获得一个迭代器对象iter # (2) 不断的调用迭代器对象iter的__next__方法将返回值赋值给给变量i,知道收到StopIteration退出循环 from typing import Counter l = [1,2,3] iter = l.__iter__() print(iter.__next__()) # 1 print(iter.__next__()) # 2 print(iter.__next__()) # 3 #print(iter.__next__()) # 只有三个值,第四个报错:StopIteration # 实现一个迭代器 l = [i for i in range(1,101)] #print(l) # 所有的数据都存在到列表内存中,若要存大量数据,内存不足 class MyIter(object): def __init__(self) -> None: self.n = 0 self.max = 5 def __iter__(self): return self def __next__(self): if self.n < self.max: self.n += 1 else: raise StopIteration return self.n obj = MyIter() obj.__iter__() obj.__next__() print(obj.__next__()) for i in obj: print(i) ################################################## # 可以拆开,将iter和next方法写在两个类里面 class Num5(object): def __iter__(self): return MyIter() class MyIter(object): def __init__(self) -> None: self.n = 0 self.max = 5 def __next__(self): if self.n < self.max: self.n += 1 else: raise StopIteration return self.n obj = Num5() for i in obj: print(i) ############################################### # 生成器: # 生成器是一个特殊的迭代器 def getNum(): count = 0 while count < 5: count += 1 yield count l = getNum() # 创建生成器对象 print(l.__next__()) print(l.__next__()) for i in l: print(i)
这篇关于python学习笔记(7)迭代器和生成器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器