• Python函数进阶


    三元表达式/列表推导式/字典生成式 只是让你的代码少一些,但是逻辑没发生变化

    三元表达式

    # 三元表达式只支持双分支结构
    
    name = 'apple'
    print('red') if name == 'apple' else print('blue')
    
    

    red

    列表推导式

    lt = [i ** 2 for i in range(10)]
    print(lt)
    

    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    字典生成式

    # 字典生成式一般与zip连用
     
    z = zip(['a','b','c','d'],[1,2,3,4]) #压缩方法,Python解释器的内置方法
    dic = {k:v**2 for k,v in z}
    print(dic)
    

    {'a': 1, 'b': 4, 'c': 9, 'd': 16

    生成器

    #生成器:自定义迭代器,生成器就是迭代器(自己造出来的)
    
    #yield关键字的三个特性
    
    #1.yield可以把函数变成生成器(自定制的迭代器对象,具有__iter__和__next__方法)
    #2.yield可以停止函数,再下一次next再次运行yield下面的代码
    #3.有n个yield生成器就有n个元素,就可以next n次,第n+1次next会报错
    
    
    # 自定义一个range()函数
    def range(x,y,z): #普通版
    	while x < y:
            yield x
    		x += z
            
    def range(*args, step = 1): #通用版
    	args = list(args)
        if len(args) == 1:
        	count = 0
            while count < args[0]:
                yield count
                count += step
         elif len(args) == 2:
         	while args[0] < args[1]:
                yield args[0]
                args[0] += step     
           
    
    

    匿名函数

    #匿名函数需要关键字 lambda
    
    #lambda 参数:<代码块>
    f = lambda x: x+1
    res = f(1)
    print(res) # 2
    
    # 匿名函数一般不单独使用,和filter()/map()/sorted()/列表sort()内置方法联用
    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    salary_list = list(salary_dict.items())
    new_salary_list = sorted(salary_list, key=lambda i: i[1], reverse=True)  # 重新创建一个新的列表进行排序
    print(new_salary_list)
    
    #[('jason', 100000), ('tank', 5000), ('nick', 3000), ('sean', 2000)]
    
  • 相关阅读:
    [LeetCode] 56. Merge Intervals 解题思路
    [LeetCode] 128. Longest Consecutive Sequence 解题思路
    [LeetCode] Subsets I (78) & II (90) 解题思路,即全组合算法
    linux安装PHP7以及扩展
    php安装composer
    细说PHP中strlen和mb_strlen的区别
    mysql一些简单操作
    mysql数据库使用Navicat时向Navicat导入sql文件时某字段过大时的处理
    JS中||的某些用法
    PHP验证身份信息
  • 原文地址:https://www.cnblogs.com/michealjy/p/11348551.html
Copyright © 2020-2023  润新知