• Python3 函数进阶3


    匿名函数

    定义匿名函数

    我们之前定义的函数都是有名函数, 我们可以通过函数名来调用

    匿名函数顾名思义就是一种没有绑定函数名的函数, 使用一次既被回收

    • 匿名函数结构: lambda 参数 : 返回值
    # 输入两个参数, 返回两个参数得和
    lambda x, y: x+y
    

    匿名函数的使用

    我们如何使用匿名函数呢? 由于匿名函数的特性, 匿名函数通常与其他内置方法联用

    • max()/min() + 匿名函数
    # 取出年龄最大者的姓名
    age_dict = {
        'bigb': 20,
        'blake': 22,
        'tom': 24,
        'jason': 26
    }
    
    # 有名函数实现方法
    def func(name):
        return age_dict[name]
    
    res = max(age_dict, key=func)  
    print(res)  # jason
    '''
    max()方法会遍历age_dict得到key
    将key依次传入func中, 返回年龄
    再对年龄排序,得到最大值
    '''
    
    # 匿名函数实现方法
    res = max(age_dict, key=lambda name: age_dict[name])
    print(res)  # jason
    
    
    • filter() + 匿名函数
    # 取出年龄大于22岁者的姓名
    age_dict = {
        'bigb': 20,
        'blake': 22,
        'tom': 24,
        'jason': 26
    }
    
    
    res = filter(lambda name: age_dict[name] > 22, age_dict)
    print(list(res))  # ['tom', 'jason']
    '''
    filter()方法会遍历age_dict得到key
    将key依次传入匿名函数, 返回大于22
    res本质上是迭代器对象
    '''
    
    • map() + 匿名函数
    # 返回由(lis元素+2)组成的列表
    lis = [1, 2, 3]
    
    def func(item):
        return item + 2
    
    res = map(func, lis)
    print(list(res))  # [3, 4, 5]
    
    
    # 匿名函数实现方法
    res = map(lambda item: item + 2, lis)
    print(list(res))  # [3, 4, 5]
    
    • sorted() + 匿名函数
    # 将四个人姓名按年龄降序排列
    age_dict = {
        'bigb': 20,
        'blake': 22,
        'tom': 24,
        'jason': 26
    }
    
    def func(name):
        return age_dict[name]
    
    
    res = sorted(age_dict, key=func, reverse=True)
    print(res)  # ['jason', 'tom', 'blake', 'bigb']
    
    # 匿名函数实现方法
    res = sorted(age_dict, key=lambda name: age_dict[name], reverse=True)
    print(res)  # ['jason', 'tom', 'blake', 'bigb']
    

    内置函数

    • enumerate() 返回包含元素索引和元素的对象
    lis = [1, 2, 3]
    for ind,val in enumerate(lis):
        print(ind, val)
        
    '''
    0 1
    1 2
    2 3
    '''
    
    • eval() 去除字符串的引号, 留下来什么就是什么
    s = '[1, 2, 3]'
    print(type(eval(s)), eval(s))  # <class 'list'> [1, 2, 3]
    
    • divmod() 取整取余
    • chr/ord ASCII和字母转换
    • hash 是否可哈希
    • bytes 解码字符
    • round 四舍五入
    • dir 列出模块所有方法
    • globals/locals 列出所有全局变量/列出当前位置所有变量
    • pow 求次方
    • any/all 迭代对象内的元素有一个为True则为True/所有为True则为True
    • abs 绝对值
    • sum 求和
  • 相关阅读:
    leetcode 912. 排序数组
    leetcode 633. 平方数之和
    leetcode 1512. 好数对的数目
    leetcode 1822. 数组元素积的符号
    leetcode 145. 二叉树的后序遍历
    leetcode 11. 盛最多水的容器
    leetcode 28 实现strStr()
    leetcode 27. 移除元素
    leetcode 26. 删除有序数组中的重复项
    产品化思维之公式系统
  • 原文地址:https://www.cnblogs.com/bigb/p/11585714.html
Copyright © 2020-2023  润新知