zoukankan      html  css  js  c++  java
  • python全栈开发 * 13知识点汇总 * 180619


    13 迭代器和⽣成器
    一.迭代器
    1.以通过dir函数来查看类中定义好的所有⽅法
    2.__iter__ 用来获取当前对象的迭代器
    3.__next__ 获取可迭代对象的元素
    s="我爱吃火锅"
    ret=dir(s) # 查看字符串s中定义好的所有方法
    print(ret)
    it=s.__iter__() # 用来获取当前对象的迭代器
    print(it.__next__()) # 获取可迭代对象的元素 第一个
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
    print(it.__next__()) # 最后一个元素后.继续__next__会报错 stop iteration

    def func(): #一次把可迭代对象元素循环遍历出来
    lst = []
    for i in range(0, 10000):
    lst.append("服装"+str(i))
    return lst
    print(func())

    def func():
    for i in range(0,10000):
    yield "服装"+str(i)
    gen=func()
    for i in range(0,65): # 分批次按需求来拿元素
    ret=gen.__next__()
    print(ret)
    二.生成器
    1.什么是生成器 ⽣成器实质就是迭代器
    2.在python中有三种⽅式来获取⽣成器:
    (1)通过生成器函数
    def func():
    print((111))
    yield "222"
    gen=func() # 如果函数中有yield,则此函数为生成器函数
    ret=gen.__next__() # 生成器实质是迭代器,可直接执行__next__()
    print(ret)
    (2)yield 和return 的区别.
    # 程序中有yield ,函数是生成器函数,访问生成器函数,函数不会执行,返回一个生成器.
    # 生成器执行__next__,执行到下一个yield.
    # yield 和return 基本相同,只是yield只负责返回,不会结束函数
    # return 结束函数
    (3) 生成器的作用 : 节省内存
    (4) send 和 yield 的区别:send 给上一个yield位置传递一个值进去.但是__next__不能. 不能给最后⼀个yield发送值
    (5) send() 第一次必须用__next__ (因为上面没有yield了.
    def func():
    print("想吃饭了")
    a=yield "想吃麻辣烫"
    print("想吃"+a)
    b=yield "还想吃什么"
    print("想吃"+b)
    c=yield "呷哺呷哺"
    print(c)
    gen=func()
    ret=gen.__next__()
    print(ret)
    ret1=gen.send("麻辣小龙虾")
    print(ret1)
    ret2=gen.send("海底捞")
    print(ret2)
  • 相关阅读:
    HTML CSS 特殊字符表
    vscode代码统计——Vscode counter
    js数组方法整理
    CSS-界面滚动时不显示滚动条
    Vue Loader 作用域CSS(scoped)——/deep/ 深入组件选择器
    PHP模板引擎,Smarty定义
    mysql触发器trigger 实例详解
    mysql关于数据库表的水平拆分和垂直拆分
    关于数据库表的水平拆分和垂直拆分
    使用Merge存储引擎实现MySQL分表
  • 原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9198573.html
Copyright © 2011-2022 走看看