迭代器与生成器
可迭代对象:但凡内置有__iter__方法的都是可迭代对象
迭代器:
d1 = d.__iter__()
d1是个迭代器
d1.__next__()
取下一个值
可以print出来
迭代器对象:内置有__next__方法的,并且内置有__iter__方法的对象
迭代器对象.__next__() 得到下一个值
迭代器对象.__iter__() 得到迭代器本身
文件是迭代器
生成器:
def func():
yield 1
yield 2
yield 5
g = func()
g 是个生成器,generator,是个迭代器,,,
g.__next__()
运行到第一个yield暂停返回
len('www') __len__()
next(g) __next__()
iter(可迭代对象) __iter__()
x = yield 返回值
while True:
x = yield None
print('{}'.format(x))
可以一直next
g = func()
g.send('狗吃骨头')
把变量给了x
g.send(None) 相当于next(g)
把程序运行到yield处,必须先有yield才能send
g = dog('a')
g.send(None) # 先把狗叫过来
g.send('骨头') #然后喂东西
g.send('包子')
...
程序挂起,准备好了就运行,等待着值
g.close()
关闭生成器
不能send两个值,可以传一个列表等
将值给了yield,在传给了x,返回的一直 是 111,
传给x,运行,返回值
三元表达式:res = x if 1 > 2 else y
列表生成式:l = [x for x in l if x.startswith('a')]
字典生成式:dic = {key:None for key in keys}
res = {k:v for k,v in items if k != 'gender'}
res = ()
生成生成器,元组不可变
递推
回溯
从回溯最终结果回溯到最初,再从最初的值递推得出最终的结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现