Python生成器建议收藏

1.生成器使用yield语句,每次产生一个值,函数就会被冻结2.列表推导式可以用来创建list例:生成[1*1,2*2,3*3,4*4,5*5]的列表,即[1,4,9,16,25]

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Python生成器建议收藏此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

  生成器是Python新引入的概念,生成器可以帮助我们写出非常优雅的代码

1. 生成器

  使用yield语句,每次产生一个值,函数就会被冻结 

def fun(li):
    for i in li:
        #print (i)
        yield i

li = [1,2,3,4,5]
for i in fun(li):
    print (i)

2.列表推导式

  可以用来创建list

  例:生成[1*1, 2*2, 3*3, 4*4, 5*5]的列表,即[1,4,9,16,25]

#方法1
def fun1():
    l = []
    for i in range(1,6):
        l.append(i * i)
    return l

print (fun1())

#方法2
def fun2():
    return (i*i for i in range(1,6))

ll = list(fun2())
print (ll)

#方法3
def fun3():
    for i in range(1,6):
        yield i*i
for i in fun3():
    print (i)
输出:
>>>> [1,4,9,16,25] >>>> [1,4,9,16,25]
>>>> 1
>>>> 4
>>>> 9
>>>> 16
>>>> 25

特别注意在斐波那契数列例子中a,b=b,a+b语法

3. yield实现协程任务器调度

#coding = utf-8

'''
    yield实现协程任务调度
'''
from collections import deque

class TaskScheduler:
    def __init__(self):
        self.taskqueue = deque()

    def new_task(self, task):
        self.taskqueue.append(task)

    def run(self):
        while self.taskqueue:
            task = self.taskqueue.popleft()
            try:
  
                next(task)
                self.taskqueue.append(task)
            except Exception:
                print ("run exception")

def task1(n):
    while n > 0:
        print ("say hello: %d" %(n))
        yield n
        n -=1
    print ("task1 say goodble")

def task2(n):
    x= 0
    while x < n:
        print ("say hi:%d" %(x))
        yield x
        x += 1

    print ("task2 say goodbye")

taskschequler = TaskScheduler()
taskschequler.new_task(task1(4))
taskschequler.new_task(task2(4))
taskschequler.run()
    

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120226.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 公务员叫停年终奖_100个月年终奖

    公务员叫停年终奖_100个月年终奖年底红包,多少羡慕嫉妒恨  时光荏苒,岁月蹉跎。不知不觉间,2011年即将走过。忙碌了一年的人们,自进入12月便开始了年终奖的各种讨论及猜测。在贴吧,微博网友们纷纷以晒年终奖的方式品味着所有快乐以及忧愁。  2011年,通胀压力下物价节节攀高,进入下半年CPI指数有所下降,但消费支出压力丝毫没有得到缓解,特别是集中到年底流水似的花销更叫人隐隐作痛。在现实的生存压力之下,上班族对年终

  • 据说很快的数据库分页存储过程

    据说很快的数据库分页存储过程

  • 免费且超级好用的搜索引擎INSO[通俗易懂]

    免费且超级好用的搜索引擎INSO[通俗易懂]免费且超级好用的搜索引擎INSO已经上线啦,界面UI是采用FlatUI设计,能够搜索到很多很多资源,近期资源一般来说要等10天左右,否则基本上是枪版。后面我会推出开发这个搜索引擎的系列教程的,尽请期待!网址是http://www.inso.hk

  • 最全的ios系统导出微信聊天记录&生成词云教程

    首先放一张我的iPhone手机导出微信聊天记录生成的词云效果图(个别敏感词汇请大家自行忽略hhh):对于如何导出手机上的微信聊天记录,网上绝大部分教程提到的“楼月微信聊天记录导出恢复助手”和“手机博士微信聊天记录查看”等软件都是收费的,免费版本只能查看很少的几条聊天记录并且不能导出。在这里提供一种绝对免费的方法可以方便地导出微信聊天记录,后面附上根据聊天记录生成词云的教程。由于我个人的手机是i…

  • js遍历对象属性的一些方法有哪些_js面试遍历对象的所有属性

    js遍历对象属性的一些方法有哪些_js面试遍历对象的所有属性1.Reflect.ownKeys()静态方法Reflect.ownKeys()返回一个由目标对象自身的属性键组成的数组。2.Object.entries(obj)Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for…in循环遍历该对象时返回的顺序一致(区别在于for-in循环还会枚举原型链中的属性)。3.Object.fromEntr…

    2022年10月20日
  • CSS样式表优先级

    CSS样式表优先级前端入门学习笔记(持续更新中)以下结论仅基于浏览器的表现,不涉及深层原理,有待深入。 行内样式VS内部样式、链接样式、导入样式 *结论:行内样式优先级最高 内部样式VS链接样式 …

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号