• python基础07--函数式编程与内置函数


    匿名函数:不需要指定显示的指定函数(lambda)

    def int(n) :
        return n**(n+1)
    print(int(2))
    View Code
    lambda n:n**(n+1)
    print(int(2))
    View Code

    匿名函数的应用:

    dic={'k1':10,'k2':100,'k3':30}
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    View Code
    res = map(lambda x:(x+1)**2,[1,3,7,4,9])
    for i in res:
        print(i)
    View Code

    函数式编程:

    高阶函数:满足以下一个即可

    1.函数的传入参数是一个函数名

    2.函数的返回值是一个函数名

    map函数:处理序列中的每个元素,得到的结果是一个"列表",该"列表"元素个数和位置与原来一样

    array=[1,3,4,71,2]
    
    ret=[]
    for i in array:
        ret.append(i**2)
    print(ret)
    
    #如果我们有一万个列表,那么你只能把上面的逻辑定义成函数
    def map_test(array):
        ret=[]
        for i in array:
            ret.append(i**2)
        return ret
    
    print(map_test(array))
    
    #如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样
    def add_num(x):
        return x+1
    def map_test(func,array):
        ret=[]
        for i in array:
            ret.append(func(i))
        return ret
    
    print(map_test(add_num,array))
    #可以使用匿名函数
    print(map_test(lambda x:x-1,array))
    View Code

    reduce函数:

    array=range(100)
    def reduce_test(func,array):
        l=list(array)
        res=l.pop(0)
        for i in l:
            res=func(res,i)
        return res
    
    print(reduce_test(lambda x,y:x+y,array))
    View Code

    filter函数:遍历序列中的每个元素,判断每个元素得到的布尔值,若为True则保留

    movie_people=['alex','wupeiqi','yuanhao','sb_alex','sb_wupeiqi','sb_yuanhao']
    
    def tell_sb(x):
        return x.startswith('sb')
    
    
    def filter_test(func,array):
        ret=[]
        for i in array:
            if func(i):
                ret.append(i)
        return ret
    
    print(filter_test(tell_sb,movie_people))
    
    
    print(filter(lambda x:x.startswith('sb'),movie_people))
    View Code

    内置函数:

    abs:求绝对值               all:将序列值拿出来做布尔值(一假全假)      any:将序列值拿出来做布尔值(一真全真)

    bin:十进制转为二进制            hex:十进制转为十六进制                      oct:十进制转为八进制

    bool:做布尔值(假:none、0、空)        bytes:将字符串转换成字节     

    dir:返回当前范围内的变量、方法和定义类型列表     divmod:除商得余数(用于分页功能)  eval:将数据从字符串结构中提取出来进行运算

    hash:进行hash运算得出的结果是固定位数的(可hash的数据类型是不可变数据类型)      isinstance:判断数据类型,返回结果为布尔值

    locals:显示局部变量            globals:显示全局变量           zip:序列中的元素一一对应显示

    max/min :最大最小值(同一类型数据的元素才可以依次进行比较)   pow(a,b,c):a的b次方再除c取余

    reverse:数据进行反转           chr:传入一个数值,根据ASCLL表输出对应字符      ord:传入一个字符,根据ASCALL表输出对应数值

    round:四舍五入          slice:切片取值            sorted:通过比较大小进行排序         vars:无参数时与locals一样

    import:导入模块,直接调用已有模块              -import-:字符串类型进行导入模块

  • 相关阅读:
    P1582 倒水 (二进制)
    P2014 选课 (树形动规)
    多项式前置技能——复数
    P3694 邦邦的大合唱站队 (状压DP)
    P1754 球迷购票问题 (卡特兰数,递推)
    [SCOI2003]字符串折叠 (区间DP)
    [SDOI2008]仪仗队 (欧拉函数)
    4-字符串
    3.输出,输入,基本数据类型
    2.栈,堆,寄存器的理解
  • 原文地址:https://www.cnblogs.com/sakura-gyt/p/12749787.html
Copyright © 2020-2023  润新知