zoukankan      html  css  js  c++  java
  • 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-:字符串类型进行导入模块

  • 相关阅读:
    84最佳买卖股票时机含冷冻期(309)
    83 不同路径 II(63)
    82同路径(62)
    模块与包
    名称空间与作用域
    函数的参数
    函数对象
    函数继续学习中
    python学习day3-上午
    第一个完成程序:通过文件实现注册登录
  • 原文地址:https://www.cnblogs.com/sakura-gyt/p/12749787.html
Copyright © 2011-2022 走看看