高阶函数、递归函数和内置函数
高阶函数和递归函数
#函数名可以进行赋值,可以作为函数参数,可以作为返回值
#高阶函数:允许导入函数作为参数导入或者返回值为函数
def f(n):
return n*n
def fun(a,b,fun1):
an1=fun1(a)+fun1(b)
return (an1)
print(fun(1,2,f))
def sqrt(n):
return n*n
def function(a,b,function1):
answer=function1(a)+function1(b)
return answer
print(function(1,8,sqrt))
# 65
#递归函数
#递归函数特点:自己调用自己,结束判断
#递归可以写的程序,循环都可以做,递归效率在很多时候很低
def recursion(n):
if n==1:
return 1
return n*recursion(n-1)
print(recursion(5))
# 120
#斐波那切数列
def fibo_seq(n):
if n==1:
return 0
elif n==2:
return 1
else:
return fibo_seq(n-1)+fibo_seq(n-2)
print(fibo_seq(10))
内置函数(python3.0以后)
很多,网上也有很多,可以去看看。
print(any([1]))
print(eval("1+2*3")) #eval有计算器功能
#eval()函数能把字符串类型成其他类型执行,比如转换成列表,元组和字典
#filter函数
list1=[1,2,3,4]
def fun1(l):
if l!=1:
return l
ret=filter(fun1,list1)
# ret变成迭代器
print(ret)
# <filter object at 0x000000911CD9B978>
print(list(ret))
# [2, 3, 4]
#map函数
def fun2(l):
return l+2
ret1=map(fun2,list1)
print(ret1)
# <map object at 0x000000E5A604B9E8>
print(list(ret1))
# [3, 4, 5, 6]
#reduce函数
# def reduce(function, sequence, initial=None): # real signature unknown; restored from __doc__
# """
# reduce(function, sequence[, initial]) -> value
#
# Apply a function of two arguments cumulatively to the items of a sequence,
# from left to right, so as to reduce the sequence to a single value.
# For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
# ((((1+2)+3)+4)+5). If initial is present, it is placed before the items
# of the sequence in the calculation, and serves as a default when the
# sequence is empty.
# """
# pass
from functools import reduce
def add1(x,y):
return x+y
print(reduce(add1,range(1,10)))
# 45
a=5
b=6
c=lambda a,b:a+b #lambda函数没有名字,表示一个表达式
print(c(1,2))
# 3
#阶乘:函数式编程的方法,命令式编程比较直观
from functools import reduce
print(reduce(lambda a,b:a*b,range(1,6)))
#120
大家对内容有任何问题,欢迎留言,定在第一时间解答,谢谢大家!
转载于:https://blog.51cto.com/10777193/2082947