首页 > 编程语言 >python之生成器

python之生成器

时间:2024-01-25 18:44:42浏览次数:41  
标签:__ .__ python 生成器 next print

1.生成器优势

  • 节省空间:生成器按需生成值,避免了一次性加载所有数据到内存中。这对于处理大型数据集尤其重要。
  • 惰性计算:生成器支持惰性计算,只有在需要时才计算值。这在处理无限序列或需要动态生成数据的场景中非常有用。
  • 一次性使用:生成器通常是一次性的,一旦遍历完毕,就需要重新创建生成器对象。

2.案例

  • 斐波拉契(1,1,2,3,5,8.。。。)
 1 #!/usr/bin/python
 2 def feibo(n):
 3     '''1 1 2 3 5 8....'''
 4     a,b=0,1
 5     for i in range(n):
 6         yield b
 7         a,b=b,a+b
 8 
 9 f=feibo(10)
10 # print(f.__next__())
11 # print(f.__next__())
12 # print(f.__next__())
13 # print(f.__next__())
14 # print(f.__next__())
15 # print(f.__next__())
16 # print(f.__next__())
17 # print(f.__next__())
18 # print(f.__next__())
19 # print(f.__next__())
20 # print(f.__next__())
21 # print(f.__next__())
22 # StopIteration
23 for i in f:
24     print(i)
View Code
  • 并行
 1 #!/usr/bin/python
 2 #生成器
 3 
 4 def cusumer(name):
 5     """定义消费者进店等着消费"""
 6     print('%s进店了等着吃饺子了'%name)
 7     while True:
 8         count_dumpling =yield #新增了个参数count_dumpling,需要被传进来
 9         print('%s吃了%s个饺子'%(name,count_dumpling))
10 
11 def productor():
12     """生产者生产流程"""
13     c1 =cusumer('小张')
14     c2 =cusumer('小李')
15     c1.__next__()   #需要调用
16     c2.__next__()   #需要调用
17     for i in range(10):
18         print('饺子来了')
19         c1.send(i+1)                  #对应cosumer里面的while true
20         print('饺子来了')
21         c2.send(i+1)
22 productor()
View Code

标签:__,.__,python,生成器,next,print
From: https://www.cnblogs.com/Little-Girl/p/17987913

相关文章

  • locust+python性能测试库
    一.简介locust官网介绍:Locust是一个用于HTTP和其他协议的开源性能/负载测试工具。其对开发人员友好的方法允许您在常规Python代码中定义测试。Locust测试可以从命令行运行,也可以使用其基于Web的UI运行。可以实时查看吞吐量、响应时间和错误和/或导出以供以后分析。二.......
  • Python并发编程之进程池,线程池与信号量
    【一】进程池和线程池【0】池池的概念:资源管理:池用于管理和维护一组资源(如进程或线程),而不是每次需要时都创建和销毁这些资源。这有助于减少创建和销毁的开销。并发处理:池允许并发地执行多个任务,每个任务由池中的一个资源处理。这提高了程序的并发性能。任务队列:池通......
  • python之装饰器使用场景
    1.用户登录认证有三个界面需要登录认证通过后才能查看一个登录函数作为装饰器调用使用@函数名调用中如果加参数,则装饰器需要再加一层1deflogin(func):2defdesc(*args,**kwargs):3user='test'4passwd='123456'5n=06......
  • 详解ElasticSearch Python Client ReadTimeout
    详解ElasticSearchPythonClientReadTimeout在使用Python连接Elasticsearch时,我们经常会遇到一些异常情况,其中之一就是ReadTimeout错误。本文将详细介绍这个错误的原因以及如何处理。什么是ReadTimeout错误?ReadTimeout错误通常是由Elasticsearch连接超时引起的。当在与Elasticsea......
  • JAVA调用Python脚本执行
    SpringBoot-web环境<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>springboot--启动类@SpringBootApplication(ex......
  • python代码
    #读取.mat文件mat_data=scipy.io.loadmat('C.mat')#获取矩阵数据adj_matrix=mat_data['C']一个简短的python代码:alph=['A','B','C','D','E','F','G','H','I','J......
  • Python基础语法:代码规范、判断语句与循环语句
    Python是一种高级、动态类型的编程语言,其语法清晰、简洁,易于学习。本文将介绍Python基础语法中的代码规范、判断语句和循环语句。一、代码规范良好的代码规范可以提高代码的可读性和可维护性。在Python中,有一些常见的代码规范建议:使用有意义的变量名。变量名应该清晰地描述变量的用......
  • Python语言的优缺点详解!
    人人都知道,Python是一门高级的编程语言,涉及领域广泛,应用范围多,薪资待遇也是非常不错的,那么Python有哪些优缺点,你了解吗?接下来老男孩教育为大家汇总介绍一下。Python语言的优点介绍:1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序好像阅读英文一......
  • python之实现文件增删改查操作
    实现文件增删改查操作         1.写入文件'''以w形式打开文件,写入记录'''1#!/usr/bin/python2withopen('test','w',encoding='utf-8')asf:3'''插入数据'''4f.writelines('......
  • 【Python爬虫】爬虫基础
    爬虫是什么爬虫介绍爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术,将互联网中丰富的网页信息保存到本地,形成镜像备份。我们熟悉的谷歌、百度本质上也可理解为一种......