函数4

南楼画角 提交于 2019-11-30 10:35:38
一. 三元表达式
    求2个数的最大值
        • 普通方法
        
        x=2
        y=3
         
        if x > y:
            print(x)
        else:
            print(y)
        
        • 三元表达式
        
        x = 2
        y = 3
        max = x if x > y else y
        
二. 可迭代对象与迭代器对象
    1. 可迭代对象
        • 定义:内置有__iter__方法的都叫可迭代对象
        • 属于可迭代对象的数据类型:str, list, tuple, dict, set, file

        name = 'byx'.__iter__
        lis = [1, 2].__iter__
        tup = (1, 2).__iter__
        dic = {'name': 'nick'}.__iter__
        s1 = {'a', 'b'}.__iter__
        
        f = open('49w.txt', 'w', encoding='utf-8')
        f.__iter__
        f.close()
    

    2. 迭代器对象
        • 定义:可迭代的对象执行__iter__方法得到的返回值。
        • 特点:
            1. 内置__next__方法,执行该方法会拿到迭代器对象中的一个值。
            2. 内置__iter__方法,执行该方法拿到迭代器本身。
            3. 文件本身就是迭代器对象。
        • 缺点:
            1. 取值麻烦,只能一个个取,并且只能往后取,值取了就没了。
            2. 无法使用 len() 方法获取长度。
        
        dic = {'a': 1, 'b': 2, 'c': 3}
        iter_dic = dic.__iter__()
        print(iter_dic.__next__())
        print(iter_dic.__next__())
        print(iter_dic.__next__())
        
        结果:
        a
        b
        C
        
    3. for 循环原理
        • for循环又称为迭代器循环,in后必须是可迭代的对象
        • 因为迭代器使用__iter__后还是迭代器本身,因此for循环不用考虑in后的对象是可迭代对象还是迭代器对象。
        
        lis = [1, 2, 3]
        for i in lis:
            print(i)
            
        结果:
        1
        2
        3
        
三. 生成器
    1. 生成器函数
        • 定义:常规函数定义, 但使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,再每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行。
        • 优点:不会一下在内存中生成太多数据

        def produce():
            """生产衣服"""
            for i in range(2000000):
                yield "生产了第%s件衣服"%i
        
        product_g = produce()
        print(product_g.__next__()) #要一件衣服
        print(product_g.__next__()) #再要一件衣服
        print(product_g.__next__()) #再要一件衣服
        num = 0
        for i in product_g:         #要一批衣服,比如5件
            print(i)
            num +=1
            if num == 5:
                break
        
    2. 生成器表达式
        
        gen = (i for i in range(10)) 
        print(gen) 
        
        结果: 
        <generator object <genexpr> at 0x106768f10> 
        
四. 列表推导式和字典推导式
    1. 列表推导式
    
    print([i for i in range(10)])
    
    结果
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    2. 字典生成式
        • 一般生成
        print({i: i**2 for i in range(5)})
        
        结果:
        {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
        
        • zip方法生成
        
        keys = ['name', 'age', 'gender']
        values = ['byx', 19, 'male']
        
        res = zip(keys, values)
        print({zip(keys,values)})
        
        info_dict = {k: v for k, v in res}
        print({info_dict})
        
        结果:
        <zip object at 0x11074c088>
        {'name': 'byx', 'age': 19, 'sex': 'male'}
        

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!