• python学习手册:第十九章——函数的高级话题


    递归

    一个逼格高的求和递归

    def mysum(L):
        return 0 if not L else L[0] + mysum(L[1:)
    

    用来进行对不定项列表进行累加:

    def sum(L):
        tot = 0
        for x in L:
            if not isinstance(x,list): #判断x是子列表还是值,如果是值的话累加,如果是列表的话进入递归,再次判断子列表是否还有子列表,是的话继续递归并且累加所有数值
                tot += x
            else:
                tot += sumtree(x)
            return tot
    L = [1,[1,[1,[11]]]]]
    

    匿名函数lambda

    • lambda函数一般形式是lambda后边是参数加冒号,之后是一个表达式
    • lambda是一个语句可以出现在python不允许出现的地方
    • lambda主体是一个单个的表达式,而不是一个代码块
    # 用法1:lambda和函数进行嵌套
    def x():
        lambda x: print ('a')
        return x
        
    # 用法2:需要一个简单函数时临时创建
    for i in range(1,10):
        p = (lambda x:x**2 if x/2==0 else x**0.5)
        print (p(i))
    

    map

    • map函数的作用是遍历序列,对序列的每一个元素进行函数处理
    def s1(s):
        return s + 'map'
    s = "spam"
    print (list(map(s1,s))) #['smap', 'pmap', 'amap', 'mmap'] ,看来字符串会做整体处理
    print (tuple(map(s1,s))) # ('smap', 'pmap', 'amap', 'mmap')
    s = 'sppaam'
    print (set(map(s1,s))) # {'amap', 'pmap', 'smap', 'mmap'}
    
    # map和lambda组合处理
    s = [1,2,3,4,5,6]
    print (map(lambda x:x ** 2,s)) # [1, 4, 9, 16, 25, 36]
    

    filter

    • filter的作用就是根据某些条件筛选出符合条件的序列中的元素

    reduce函数

    • reduce() 函数会对参数序列中元素进行累积。
    • 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
    #在python3中,reduce是functools中的一个函数
    from functools import reduce
    reduce((lambda x,y:x + y),[1,2,3,4])
    

    lambda和def的区别

    • lambda总是可以被def取代,lambda只有一个返回值,不适合较大的函数
  • 相关阅读:
    使用AChartEngine画图,项目总结
    Windows系统安装实验报告
    Linux系统安装实验报告
    vm虚拟机详细安装步骤
    L3-010. 是否完全二叉搜索树
    第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛
    L2-021. 点赞狂魔
    L2-020. 功夫传人
    L2-019. 悄悄关注
    L2-017. 人以群分
  • 原文地址:https://www.cnblogs.com/yingyingdeyueer/p/11852946.html
Copyright © 2020-2023  润新知