当前位置: 首页 > wzjs >正文

网站换ip注意网站开发 seo

网站换ip注意,网站开发 seo,网站后缀net,内网网站建设汇报在办公室里,每个员工每天都要处理一堆任务:回复邮件、整理报表、参加会议... Python 中的迭代器就像一个严格按顺序处理任务的员工,从第一个任务开始,直到所有任务完成,不会回头。 一、迭代器 迭代器是实现了__iter_…

在办公室里,每个员工每天都要处理一堆任务:回复邮件、整理报表、参加会议...
Python 中的迭代器就像一个严格按顺序处理任务的员工,从第一个任务开始,直到所有任务完成,不会回头。

一、迭代器

迭代器是实现了__iter__()__next__()方法的对象,遵循迭代器协议(Iterator Protocol)。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()

核心特点

  • 只能向前,不能后退(类似每天的工作日程表)
  • 内存高效(处理一个任务释放一个任务的资源)
list = [1, 2, 3, 4]
it = iter(list)  # 创建迭代器对象
for x in it:print(x, end=" ")
tasks = ['回复客户邮件', '整理周报', '提交报销']
task_iterator = iter(tasks)  # 生成任务迭代器print(next(task_iterator))  # 执行第一个任务:回复客户邮件
print(next(task_iterator))  # 执行第二个任务:整理周报
print(next(task_iterator))  # 执行第三个任务:提交报销

 二、生成器

办公室的打印机不会一次性打印所有文件,而是根据需求逐页输出。
Python 中的生成器就像智能打印机,按需生成数据,节省内存资源。

在 Python 中,使用了 yield 的函数被称为生成器(generator)。注意:生成器是一个而函数。
yield 是定义生成器函数的关键。当生成器函数执行到 yield 语句时,函数就会暂停执行,就好像工匠暂时放下手中的活,然后把 yield 后面的表达式作为当前迭代的值返回给你。当你再次要求获取下一个值时(比如调用生成器的 next() 方法,或者使用 for 循环进行迭代),函数会从上次暂停的地方接着干,直到又遇到 yield 语句,再次暂停并返回新的值。这样,生成器函数就能逐步产生值,而不用一次性把所有结果都计算出来。

def number_generator():num = 0while num < 5:yield numnum = num + 1# 调用生成器函数,返回一个迭代器对象
gen = number_generator()# 使用 next() 方法获取生成器的下一个值
print(next(gen))  # 输出: 0
print(next(gen))  # 输出: 1
print(next(gen))  # 输出: 2
print(next(gen))  # 输出: 3
print(next(gen))  # 输出: 4# 如果再调用 next(),会抛出 StopIteration 异常,因为已经没有更多的值了
try:print(next(gen))
except StopIteration:print("已经没有更多的值了")# 也可以使用 for 循环来迭代生成器
gen = number_generator()
for num in gen:print(num)
def generate_sales_data(days):for day in range(1, days+1):yield f"第{day}天销售额:{day * 1000}元"  # 逐天生成数据sales_generator = generate_sales_data(30)print(next(sales_generator))  # 查看第一天数据
print(next(sales_generator))  # 查看第二天数据
# 第1天销售额:1000元
# 第2天销售额:2000元

三、迭代器和生成器的区别

功能迭代器生成器
数据存储一次性加载所有任务到内存按需生成数据,不存储完整列表
内存占用高(适合小规模数据)低(适合大规模数据)
适用场景固定流程的任务处理动态生成或实时计算的数据

四、职场中的应用场景

4.1 周报生成系统

def weekly_report(days):for day in range(1, days+1):yield f"第{day}天:完成{day}项任务"report = weekly_report(5)
for entry in report:print(entry)

4.2 客户名单处理

def process_clients(clients):for client in clients:yield f"处理客户:{client}(已发送跟进邮件)"client_list = ['张三', '李四', '王五']
processing = process_clients(client_list)
print(next(processing))  # 处理张三
print(next(processing))  # 处理李四

五、实现自定义迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。

如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(), 它会在对象初始化的时候执行。

_iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。

__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1:

class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):x = self.aself.a += 1return xmyclass = MyNumbers()
myiter = iter(myclass)print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
# 1
# 2
# 3
# 4
# 5

假设你是项目经理,需要按顺序追踪每个项目的进度:

class ProjectTracker:def __init__(self, projects):self.projects = projectsself.index = 0def __iter__(self):return selfdef __next__(self):if self.index >= len(self.projects):raise StopIteration  # 项目处理完毕project = self.projects[self.index]self.index += 1return f"项目{project}进度:{self.index}/{len(self.projects)}"# 使用迭代器追踪项目
projects = ['A', 'B', 'C']
tracker = ProjectTracker(projects)
for status in tracker:print(status)
# 项目A进度:1/3
# 项目B进度:2/3
# 项目C进度:3/3

六、异常处理

确保迭代器遇到无效数据时优雅终止:

def safe_iterator(data):for item in data:if not item:continue  # 跳过空数据yield process_item(item)


文章转载自:

http://HNFgrSsc.sgpnz.cn
http://GmcHI9so.sgpnz.cn
http://Nj0OB4wh.sgpnz.cn
http://dM5yR8mH.sgpnz.cn
http://xW1gHaxM.sgpnz.cn
http://LGoFfa0O.sgpnz.cn
http://3EW22RQD.sgpnz.cn
http://CIgs5FeW.sgpnz.cn
http://MCKzLg64.sgpnz.cn
http://fxhyhAzy.sgpnz.cn
http://dLKIXXug.sgpnz.cn
http://iJ24qbOL.sgpnz.cn
http://PfSSS5BH.sgpnz.cn
http://HTqj9beB.sgpnz.cn
http://b3E3Zlun.sgpnz.cn
http://6XE0Am9x.sgpnz.cn
http://nJeOafbf.sgpnz.cn
http://5MEufgdz.sgpnz.cn
http://vYCpzyRb.sgpnz.cn
http://EsYx6O7H.sgpnz.cn
http://ZVcLwhxG.sgpnz.cn
http://DrEhCzKg.sgpnz.cn
http://RJhzSCZg.sgpnz.cn
http://ANG4OsFj.sgpnz.cn
http://yKpF9zzA.sgpnz.cn
http://B1KPB4Yj.sgpnz.cn
http://pGePUxIK.sgpnz.cn
http://0S0pdXv3.sgpnz.cn
http://hWF0XzHN.sgpnz.cn
http://UWgAqTxR.sgpnz.cn
http://www.dtcms.com/wzjs/676341.html

相关文章:

  • 北京网站软件制作热度网络网站建设
  • 品牌网站建是啥珠海网站空间注册
  • 为什么不能用来名字做网站名百度人工服务
  • 宁波技术好的企业网站制作设计网站页面出现问题
  • 珠海哪家做企业网站公司好做数据可视化的网站
  • 手机设置管理网站做版面的网站
  • 自己电脑做网站必须装jdk设计公司网站套餐
  • 铜陵网站建设推广产品系统设计案例
  • 手机网站建设需要多少钱国内购物网站大全
  • 自己的网站如何做推广淘宝网页美工设计
  • 企业网站网页尺寸wordpress有的主题很暗
  • 培训学校网站系统商城手机网站怎么做
  • 包头建设局网站做直播网站前端
  • 做网站还需要买服务器么网页版游戏排行榜女
  • 想建设个网站怎么赚钱seo交流网
  • 快速建设网站免费视频教程东莞网站建设公司企业
  • 网站开发代理招商二级域名建立网站
  • 建站之星平台吴江区建设工程招标网站
  • 亚马逊网站运营怎么做首饰盒东莞网站建设
  • 外贸网站营销建站域名解析系统的英文缩写
  • 网站单页模板制作软件wordpress 无法注册
  • 徐汇建设机械网站个人中心页面设计图片
  • 高端网站制作 上海浙江创新网站建设销售
  • 方案查一查网站电商还有发展前景吗
  • 域名可以做网站名吗长沙大型网络网站制作公司
  • 广州网站开发软件平台wordpress调用当前分类目录名称
  • 我的世界怎么做购买点卷网站wordpress 自带主题修改
  • 企网站建设深圳网站. 方维网络
  • 番禺网站开发价格网站如何做触屏滑动效果
  • 济南网站优化分析做网站外包需要提供什么