递归

一个逼格高的求和递归

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只有一个返回值,不适合较大的函数
posted on 2019-11-13 20:27  盈盈的月儿  阅读(204)  评论(0编辑  收藏  举报