zoukankan      html  css  js  c++  java
  • 12-python-generator

    '''
    1、
    可迭代对象:可以更新迭代的实实在在的值
    内部含有__iter()__方法
    优点:操作方法多,操作灵活、直观
    2、
    迭代器:可以更新迭代的一个工具(数据结构)。
    内部含有__iter__与__next__方法的
    文件句柄
    优点:节省内存。惰性机制。
    缺点:不直观,速度相对慢,操作方法单一,不能回退。
    3、格式化输出
    4、函数名的应用

    '''
    '''
    1、生成器
    yield
    yield return
    yield from
    2、生成表达式,列表推倒式
    3、内置函数
    4、生成器的本质就是迭代器,唯一的区别:生成器是我们自己用python代码构建的数据结构,迭代器都是提供的,或者转换得来的。
    5、获取生成器的三种方式。
    生成器函数
    生成器表达式
    python内部提供的一些
    '''

    # 生成器函数获取生成器
    # return:函数中只存在一个return结束函数,并且给函数的执行者返回值。
    # yield:只要函数中有yield,那么就是生成器函数
    # 生成器函数中可以存在多个yield,一个yield对应一个next。yield不会结束生成器
    # def func():
    # print(111)
    # print(222)
    # yield 3
    # yield 4
    # ret = func()
    # print(ret)
    # print(ret.__next__())
    # print(ret.__next__()) # 一个next对应一个yield

    # def func():
    # for i in range(1,5001):
    # yield f'{i} 号包子'
    # ret = func()
    #
    # for i in range(200):
    # print(ret.__next__())

    # def func():
    # l1 = [1,2,3,4,5]
    # yield from l1
    # ret = func()
    # print(ret.__next__())

    # 列表推倒式去构建一个比较复杂有规律的列表
    # 列表推倒式:
    # 循环模式:[变量(加工后的变量) for 变量 in iterable]
    # l1 = [i for i in range(1, 11)]
    # print(l1)
    # l2 = [i**2 for i in range(1, 11)]
    # print(l2)
    # l3 = [i for i in range(1, 10) if i % 2 == 0]
    # print(l3)
    # l4 = [f'python{i}期' for i in range(1, 20)]
    # print(l4)
    # 筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]
    # l1 = [i for i in range(1, 30) if i % 3 == 0]
    # print(l1)

    # l2 = ['asdqw', 'as', 'tliunwe', 'wo', 'wqileqwe']
    # l3 = [s.upper() for s in l2 if len(s) < 3]
    # print(l3)

    # names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
    # ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    # for s in names:
    # for l in s:
    # if l.count('e') == 2:
    # print(l.upper())
    #
    # l4 = [l.upper() for s in names for l in s if l.count('e') == 2]
    # print(l4)

    # 生成器表达式
    # 与列表推导式的写法几乎一模一样,也有筛选模式和循环模式,也可多层循环构建
    # print((i for i in range(10)))

    # 列表推导式
    '''
    1、列表推导式只能构建比较负责且有规律的列表
    2、超过3层循环才能构建成功的不建议使用列表推导式
    3、排错不行
    '''
    # l5 = [i for i in range(2, 11)] + list('JQKA')
    # print(l5)
  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/Daspig/p/12818872.html
Copyright © 2011-2022 走看看