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)
  • 相关阅读:
    小三学算术
    The Balance
    扫描线
    2019牛客暑期多校训练营(第九场)
    后缀数组
    Manacher
    局部变量和全局变量的区别
    2386:Lake Counting-poj
    简单背包问题(0032)-swust oj
    编程中易犯错误集锦-持续更新。。。。。
  • 原文地址:https://www.cnblogs.com/Daspig/p/12818872.html
Copyright © 2011-2022 走看看