• day14............生成器, 三元,推导


    1  生成器

    '''
    
    1 什么是生成器?
    在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码,会返回值一个值,该值称之为生成器
     生成器本质就是迭代器
    
    2、为什么要有生成器?
        生成器是一种自定义迭代器的方式
    
    3、如何用生成器
    
    
    '''
    
    
    
    # def func():
    #     print('first1')
    #     print('first2')
    #     print('first3')
    #     yield 1 #暂停
    #     print('second1')
    #     print('second2')
    #     print('second3')
    #     yield 2  #暂停
    #     print('third')
    #     yield 3 #暂停
    #     print('fourth')
    #
    # g=func()
    # print(g)
    # print(g.__iter__().__iter__().__iter__() is g)
    # res1=next(g)
    # print('第一次的返回值:',res1)
    #
    # print('='*100)
    # res2=next(g)
    # print('第二次的返回值:',res2)
    #
    # print('='*100)
    # res3=next(g)
    # print('第三次的返回值:',res3)
    #
    # print('='*100)
    # res4=next(g)
    # print('第三次的返回值:',res4)
    
    # for item in g: #g=iter(g) #item=next(g)
    #     print(item)
    
    # i=range(1,1000)
    # for item in range(1,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000):
    #     print(item)
    
    
    
    # def my_range(start,stop,step=1):
    #     while start < stop:
    #         yield start # 暂停
    #         start+=step
    # g=my_range(1,5,2) #1 3
    
    
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    
    # for item in g:
    #     print(item)
    
    
    #总结yield的功能
    #1、提供一种自定义迭代器的方式
    #2、yield可以暂停住函数,返回值
    
    #yield  VS return
    #相同点:都是用在函数内,都可以返回值,没有类型限制,没有个数限制
    #不同点:return只能返回一次值,yield可以返回多次值
    
    
    # 了解知识
    # yield 值
    # x=yield
    # x= yield 值
    View Code

    2 三元,推导

    #三元表达式
    # 条件成立时的返回值 if 条件 else 条件不成立时的返回值
    
    # def max2(x,y):
    #     if x > y:
    #         return x
    #     else:
    #         return y
    # x=10
    # y=20
    # res=x if x > y else y
    # print(res)
    
    # 列表生成式
    # l=[item**2 for item in range(1,11)]
    # print(l)
    
    
    # names=['alex','wxx','lxx']
    
    # l=[]
    # for name in names:
    #     l.append(name + 'SB')
    # names=l
    
    # names=[name+'SB' for name in names]
    # print(names)
    
    
    # names=['alex','wxx','egon','lxx','zhangmingyan']
    # l=[]
    # for name in names:
    #     if name != 'egon':
    #         l.append(name + 'SB')
    # names=l
    # names=[name+'SB' for name in names if name != 'egon']
    # print(names)
    
    
    # l=[item**2 for item in range(1,5) if item > 2]
    # print(l)
    
    # names=['egon','alex_sb','wupeiqi','yuanhao']
    # names=[name.upper() for name in names]
    # print(names)
    # names=['egon','alex_sb','wupeiqi','yuanhao']
    #
    # nums=[len(name) for name in names if not name.endswith('sb')]
    # print(nums)
    
    
    #字典生成式
    # s1='hello'
    # l1=[1,2,3,4,5]
    
    # res=zip(s1,l1)
    # print(res)
    # print(list(res))
    
    
    # keys=['name','age','sex']
    # values=['egon',18,'male']
    
    # res=zip(keys,values)
    # print(list(res))
    # print(list(res))
    # d={}
    # for k,v in zip(keys,values):
    #     d[k]=v
    # print(d)
    
    # keys=['name','age','sex']
    # values=['egon',18,'male']
    # d={k:v for k,v in zip(keys,values)}
    # print(d)
    
    info={'name': 'egon', 'age': 18, 'sex': 'male'}
    
    keys=info.keys()
    # print(keys)
    # iter_keys=keys.__iter__()
    # values=info.values()
    # print(values)
    
    # d={k:v for k,v in zip(keys,values)}
    # print(d)
    
    # s={i for i in range(10)}
    # print(s,type(s))
    
    
    
    # 生成器表达式
    # g=(i for i in range(10))
    # # print(g)
    #
    # print(next(g))
    # print(next(g))
    
    
    # nums=[11,22,33,44,55]
    # print(max(nums))
    
    # with open('a.txt',encoding='utf-8') as f:
    #     nums=(len(line) for line in f)
    #     print(max(nums))
    # print(max(nums))
    # print(max(nums))
    
    
    
    l=['egg%s' %i for i in range(100)]
    print(l)
    
    g=('egg%s' %i for i in range(1000000000000))
    # print(g)
    print(next(g))
    print(next(g))
    View Code
  • 相关阅读:
    作用域链及作用域面试题
    this在js中的作用
    dom对象
    作用域问题
    逻辑运算
    socket.io 的使用
    mongoDB 的使用
    使用 usb 调试的时候,连接上电脑没反应
    uni-app 的更新及碰到的问题
    WebSocket 的使用
  • 原文地址:https://www.cnblogs.com/xiejintao0914/p/9178640.html
Copyright © 2020-2023  润新知