zoukankan      html  css  js  c++  java
  • 07-08 函数式与内置函数

    def test():
        print ('in the test1')
    def test():
        print ('in the test')
        return test1
    res=test()
    print(res())
    
    #result:
    in the test 
    in the test1
    None

    匿名函数

    lambda x:x+1
    def calc(x):
        return x+1
    
    func=lambda x:x+1
    print(func(10))
    
    lambda x,y,z:(x+1,y+1,z+1)


    函数式编程
    三种编程方法论:面向过程 函数式 面向对象
    函数式=编程语言定义的函数+数学意义的函数(最早出现)
    不可变 不用变量保存状态 不修改变量

    高阶函数:把函数当做参数传给另外一个函数
    返回值中包含函数

    尾调用 在函数最后一步调用另外一个函数

    map函数
    1

    num_l=[1,2,3,5,9]
    def map_test(array):
        ret=[]
        for i in num_l:
            ret.append(i**2)
        return ret
    ret = map_test(num_l)    



    2

    def add_one(x):
        x=x+1
        return(x)
    
    def map_test(func,array):
        ret=[]
        for i in num_l:
            res=func(i)
        res.append(res)
        return ret
    
    print(map_test(add-one,num_l))
    
    ##filter函数
    move_people=['sb_1','sb_2','sb_3','sb_4','sb_5']
    def filter_test(array):
        ret=[]
        for p in array:
            if not p.startwith('sb'):
            ret.append(p)
        return ret
    filter(func,array)
    print(list(filter(lambe n:not n.endwith('sb'),move_people)))




    reduce函数

    from functools import reduce
    
    num_l=[1,2,3,100]
    def reduce_test(array)
        res=0
        for num in array:
            res+=num
        return res
    
    
    def rudece_test(func,array,init=100):    #初始值100
        if init=None:
            pass
        else:
            res=init
        for num in aarray:
            res=func(res,num)
        return res


    map 在原有数据基础处理,得到一个'列表',元素位置与原来相同
    filter 列表中所有值筛选 最后得出一个
    判断每个元素的布尔值,如果TRUE则留下来
    reduce 处理一个序列 合并操作 得出结论

    reduce 用法

        from functools import reduce
        num_l=[1,2,3,100]
        print(reduce(lambda x,y:x+y,num_l,1))
        print(reduce(lambda x,y:x+y,num_l))

    内置函数:
    abs:取绝对值
    all:跟序列 序列中每一个元素取出做布尔运算
    any:只要有一个是真值 返回TRUE
    bin:把十进制转换为二进制
    bool:空、none、0布尔值为FALSE
    byres:把一个字符串转换为字节形式
    chr:给数字 打印acrii表中对应
    dir:查看对象的内置方法
    divmod:divmod(10,3)10/3取余数
    eval:把字典转换为字符串
      把字符串中数字运算出来
    hash:可哈希的数据类型是不可变数据类型
      哈希是一种算法 得出一个哈希值
      不管传入参数多长 结果长度固定
      不可根据哈希值反推
    help:查看方法的使用方式
    hex:十进制转16进制
    oct:十进制转八进制
    isinstance:XX是不是XXX类型 返回布尔值
    globals:打印全局变量
    locals:打印局部变量
    zip:如同拉链
      print(list(zip(('a','n','c'),(1,2,3))))
    max:
     

     for item in zip (age_dic.value(),age_dic.keys()):
        print(item)
        print(list(max(zip(age_dic.calues(),age_dic.keys()))))
      #既有key又有value
    
    l=[
        (5,'e'),
        (1,'b'),
        (3,'a'),
        ]
    print(list(max(l)))
    max('a100','b20','c60')#但不同类型数据不可比较
    
    people=[
        {'name':'alex','age':1000},
        {'name':'AAA','age':100}
        {'name':'AA','age':10}
        {'name':'A','age':1}]
    max(people,key=lambda dic:dic['age'])
    ret=[]
    for item in people:
        ret.append(item['age'])
    print(ret)
    max(ret)


    ord:给acrii表中字符 打印对应数字
    pow:两个参数 X的Y次方
    三个参数X的Y次方对Z取余
    repr:类似print代表的str????
    reverse:颠倒顺序 反转
    round:四舍五入
    set:编程集合的形式
    slice:切片 字符?
    slice(1,4,2)#1-4步长2
    sorted:排序 比较大小排序 不同类型会报错

    people=[
        {'name':'alex','age':1000},
        {'name':'AAA','age':100}
        {'name':'AA','age':10}
        {'name':'A','age':1}]
    print(sorted(people,key=lambda dic : dic['age']))



    str:转换为字符串
    type:判断类型返回布尔值
    vars:def test():
    msg="jkafhagakjd"
    print(locals()) #打印出 成为字典形式
    _import_():
    import:引用模块 每个py文件都是模块 其中有函数? 拿来直接调用
    _import_()导入字符串类型

    文件处理流程
    1 打开文件 得到文件句柄并赋予一个变量
    2 通过句柄对文件进行操作
    3 关闭文件


  • 相关阅读:
    [转]你每天90%的注意力被浪费了
    通过浏览器navigator获取当前经纬度位置
    Sublime Text 3 安装、插件与个人配置
    ios判断手机号是否可用
    AFNetworking提示3840 Unescaped control character around character XXX
    理解OC“属性”这一概念
    熟悉Objective—C
    如何在自己的应用中打开第三方应用程序
    ios多线程开发总结
    UIView的Touch事件UIControlEvents详解
  • 原文地址:https://www.cnblogs.com/louzhiyuan/p/10393031.html
Copyright © 2011-2022 走看看