列表生成式
列表生成式可以快速创建list。
>>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]
迭代对象
常用的迭代对象有str、list、dict等,可以通过dir函数来查看对象的所有方法,可迭代对象有__iter__方法,有__iter__方法的对象都可以进行for循环。
迭代器
可以被__next__()函数调用并不断返回下一个值的对象称为迭代器,对象的__iter__()方法就可以获取到对象的迭代器,使用__next__()方法获取对象迭代过程中的下一个元素。
使用while循环+迭代器来模拟for循环:
lst = [1,2,3] lst_iter = lst.__iter__() while 1: try: i = lst_iter.__next__() print(i) except StopIteration: break
生成器
python中可以一边循环一边计算的机制称为生成器:generator,生成器也是可迭代对象。
创建生成器方法一:
>>> g = (x * x for x in range(10)) >>> g <generator object <genexpr> at 0x1022ef630>
创建方式二:
函数中包含yield关键字,此时这个函数就是生成器函数。
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'
generator和普通函数的执行流程不一样,普通函数顺序执行,遇到return或者函数最后一行就返回,而generator函数每次调用next()执行,遇到yield语句返回,当再次执行时从上次返回的yield语句出继续执行。
def odd(): print('step 1') yield 1 print('step 2') yield(3) print('step 3') yield(5) >>> o = odd() >>> next(o) step 1 1 >>> next(o) step 2 3 >>> next(o) step 3 5 >>> next(o) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术