zoukankan      html  css  js  c++  java
  • 生成器

    相信时间的力量 一切都是最好的安排! (2/2)
    --------------------------------------------------------------------------------

    # /*<--生成器函数 就是把return 换成 yeild -->*/

    #
    # def bbq():
    # print("烤茄子")
    # yield "烤生蚝"
    # print("烤面筋")
    # yield "烤韭菜"
    # print("烤秋刀鱼")
    #
    #
    # ret = bbq() #不会执行你的函数,获取生成器对象
    # print(ret) #<generator object bbq at 0x00A7CC30> generator 生成器 返回一个疑似地址的东西
    # print(ret.__next__()) #必须执行__next__()才可以触发生成器对象的运行 "考生蚝"
    # print(ret.__next__()) #必须执行__next__()才可以触发生成器对象的运行 "烤韭菜"
    # print(ret.__next__()) #StopIteration 迭代器,就找yield 执行不到就报错

    # --------------*******--------------

    # def shop():
    # lst = []
    # for i in range(1,999):
    # lst.append("foods%s" % i)
    # return lst
    # q = shop()
    # print(q)
    ## --------------*******--------------

    # def shop1():
    # for j in range(1,1999):
    # yield "foods%s" % j
    #
    # q1 =shop1() #获取生成器
    #
    # print(q1.__next__())
    # print(q1.__next__())
    # print(q1.__next__())
    # print(q1.__next__())
    # print(q1.__next__())
    ## --------------*******--------------

    # def gen():
    # i = 1
    # while i < 51:
    # yield "衣服%s" % i
    # i = i + 1
    # --------------*******--------------

    # 列表推导式

    # lst = ["奥特曼打小%s个小怪兽" % i for i in range(1,6)]
    # # 语法: [结果 for循环 if判断]
    # print(lst)

    # lis = ["中岛美雪", "夏川美里", "原由子", "汪峰", "田震","那英","周杰伦"]
    # lis1 = []
    # for i in range(len(lis)):
    # if len(lis[i])== 2:
    # lis1.append(lis[i])
    # print(lis1)
    # --------------*******--------------

    # lis = [lis(i) for i in range(len(lis)) if len(lis(i))==2]
    # print(lis)

    # liss = []
    #
    # for i in range(1,21,2):
    # x = i**2
    # liss.append(x)
    # print(liss)
    #
    # liss = [i*i for i in range(1,21,2)]
    # --------------*******--------------

    # l = [3,6,9]
    # [(1,2,3),(4,5,6),(7,8,9)]

    # liss1 = []
    # for i in l:
    # x=i-1
    # y=i-2
    # z = i
    # liss1.append((y,x,z))
    # print(liss1)

    # liss1 = [(i-2,i-1,i) for i in l]
    # print(liss1)
    # --------------*******--------------

    # names = [
    # ['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven','Joe'],
    # ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']
    # ]
    # lst = [e for i in names for e in i if e.count("e") == 2]
    # print(lst)

    # lis = {"张无忌":"赵敏", "杨过":"小龙女", "郭靖":"黄蓉"}
    # dic = {lis[key]:key for key in lis}
    # print(dic)

    # dic = {dic[i]:i for i in range(len(dic))}
    # --------------*******--------------
    # # 生成器的惰性机制
    # def func():
    # print(111)
    # yield 222
    # g = func()
    # g1 = (i for i in g)
    # g2 = (i for i in g1)
    # print(list(g2))
    # print(list(g))
    # print(list(g1))
    # --------------*******--------------
    '''
    day12作业默写
    1,整理今天的博客,写课上代码,整理流程图。
    今日主要内容(重要)
    迭代器
    __iter__() 获取迭代器
    __next__() 下一个

    生成器
    本质就是迭代器
    两种方式写生成器
    1. 生成器函数
    2. 生成器表达式

    生成器函数
    函数内部有yield. yield返回 -> return
    yield可以把函数分段执行
    生成器函数被调用的时候. 返回生成器
    def func():
    yield
    g = func() - 得到生成器

    生成器的用法和迭代器基本一致
    __next__() 开始执行生成器 . 执行到yield. 直到没有yield. 抛出StopIteration

    send() 可以给上一个yield传值

    1. 省内存
    2. 惰性机制, 不访问__next__() 就没有值.
    3. 只能向前. 不能反复.


    各种推导式(简单)
    列表推导式 [结果 for循环 if判断]
    字典推导式 {key: value for循环 if判断}
    集合推导式 {key for循环 if判断}

    生成器表达式(最难)
    (结果 for循环 if判断)
    惰性机制, 不访问__next__() 就没有值.
    只能向前. 不能反复.

    预习:
    内置函数一 整理
    '''
    # ---------------------------------------------------------------------------------#
    # # 2,用列表推导式做下列小题

    # (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
    # lsi = ["ajax", "mysql", "java", "php""js", "css", "html","ps","c#"]
    # lsi1 = [i.upper() for i in lsi if len(i) >3]
    # print(lsi1)

    # # ---------------------------------------------------------------------------------#
    # (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
    # nist = [(x,y) for x in range(0,6,2) for y in range(1,6,2)]
    # print(nist)

    # # ---------------------------------------------------------------------------------#
    # (3)求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
    # M = [3,6,9]
    # nst = [[i-2,i-1,i] for i in M]
    # print(nst)

    # # ---------------------------------------------------------------------------------#
    # (4)求出50以内能被3整除的数的平方,并放入到一个列表中。
    # nit = [i**2 for i in range(0,51,3)]
    # print(nit)
    # # ---------------------------------------------------------------------------------#
    # (5)构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']
    # lt = ["python%s期" % i for i in range(1,11)]
    # print(lt)
    # # ---------------------------------------------------------------------------------#
    # (6)构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
    # nt = [(i,i+1) for i in range(0,6)]
    # print(nt)
    # # ---------------------------------------------------------------------------------#
    # (7)构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    # nst = [i for i in range(0,19,2)]
    # print(nst)
    # # ---------------------------------------------------------------------------------#
    # (8)有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']
    # l1 = ['alex', 'WuSir', '老男孩', '太白']
    # l2 = [l1[i]+str(i) for i in range(len(l1))]
    # print(l2)
    # # ---------------------------------------------------------------------------------#
    # (9)有以下数据类型:
    # x = {
    # 'name':'alex',
    # 'val':[
    # {'tp':1517991992.94,'va':100,},
    # {'tp': 1517992000.94,'va': 200,},
    # {'tp': 1517992014.94,'va': 300,},
    # {'tp': 1517992744.94,'va': 350},
    # {'tp': 1517992800.94,'va': 280}],}

    # 将上面的数据通过列表推导式转换成下面的类型:
    # [[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]
    #
    # for i in x["val"]:
    # print([i["tp"],i["va"]],end="")

    # nst =[[i["tp"],i["va"]] for i in x["val"] ]
    # print(nst)



    # dik = {[i["tp"],i["va"]] for i in x["val"]}
    # print(dik)
    #
  • 相关阅读:
    45
    布里斯班初体验
    走出你的舒适区
    Homebrew- MAC上的包管理利器
    Java经典类库-Guava中的函数式编程讲解
    使用WebDriver遇到的那些坑
    CheckStyle, 强制你遵循编码规范
    利用php的register_shutdown_function来记录php的输出日志
    PHP-redis中文文档
    php中set_time_limit()函数运用
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/9891341.html
Copyright © 2011-2022 走看看