内置函数与匿名函数及递归

一 . 内置函数

    内置函数就是python内部给我们编写好的函数,我们可以直接拿来用

  1.几个比较关键的内置函数:

    (1).zip()

#无论是L1多还是L2多,都返回到最短的那个截至
L1=[1,2,3,4]
L2=['a','b','c']

ret=zip(L1,L2)
for i in ret:
    print(i)

# (1, 'a')
# (2, 'b')
# (3, 'c')

    (2).filter()

def a(x):
    #if x%2==1:
    #   return True
    return x%2==1

ret=filter(a,(1,2,3,4,5))            #filter(函数名,参数)把为真的值返回
print(ret)
for i in ret:
    print (i)

#上面代码可以使用下面方式表达
for i in range(1,6): if i %2==1: print(i)

#练习,输出1-100中平方根是整数的数
import math
def a(x):
    if math.sqrt(x)%1==0:
        return True

ret=filter(a,range(1,101))
for i in ret:
    print(i)

    (3)map()

ret=map(abs,(-1,4,5,3,-8))
for i in ret:
    print(i)


# 1
# 4
# 5
# 3
# 8

       3.sort与sorted

#sort函数
l=[3,6,4,1,5]
l.sort()
print(l)

#结果:[1,3,4,5,6]


#sorted函数

l=[3,6,4,1,5]
a=sorted(l)
print(a)

#结果:[1,3,4,5,6]

 二.匿名函数

  匿名函数结构:

    函数名 = lambda 参数 :返回值

  匿名函数特点:

    可以将函用一句话表示出来,简化代码

  实例1:

#普通函数
def func(x,y):
    if x>y:
        print(x)
    else:
        print(y)
func(1,3)


#匿名函数

a=lambda x,y:x if x>y else y
print(a(1,3))

      匿名函数面试题

       

#面试题1:
d=lambda x:x*2
t=lambda x:x*3
x=2
x=d(x)
x=t(x)
x=d(x)
print(x)



#结果:24
#面试题2
#把('a','b'),('c','d')利用匿名函数转化为[{'a','c'},{'b','d'}]
a1=('a','b')
a2=('c','d')
# def func(tup):
#     return {tup[0],tup[1]}

ret=zip(a1,a2)
rep=map(lambda tup:{tup[0],tup[1]},ret)
print(list(rep))

 

  三.递归函数

#阶乘
def a(n):
    if n==1:
        return 1
    else:
        return a(n-1)*n

print(a(5))
#斐波那契
def a(n):
    if n==1:
        return 0
    elif n==2:
        return 1
    else:
        return a(n-1)+a(n-2)

print(a(30))
#经典二分查找
def find(l,aim,start=0,end=None):
    end=len(l) if end is None else end
    midle_num=(start+end)//2
    if start<=end:
        if aim<l[midle_num]:
            return find(l,aim,start=start,end=midle_num-1)
        elif aim>l[midle_num]:
            return find(l,aim,start=midle_num+1,end=end)
        else:
            return midle_num
    else:
        return "can't find it"
l=[1,3,6,9,24,35,67]
print(find(l,6))
原文地址:https://www.cnblogs.com/wm0217/p/10805431.html