首先就是昨天函数的一点补充
#_author: "PXH" #date:2018/7/29 0029 #高阶函数 def mul(a): Sum = a*a return Sum def bar(a,b,func): c = func(a) + func(b) return c print(bar(1,2,mul)) #函数的参数可以为函数名 def test_1(): def test_2(): c = 5 return c return test_2() print(test_1()) #函数可以被赋值
递归
#_author: "PXH" #date:2018/7/29 0029 #实现阶乘 def factorial(num): sum_1 = 1 for i in range(1,num+1): sum_1 *= i return sum_1 print(factorial(5)) #使用递归来实现阶乘 #递归能实现的循环都可以实现,但是效率不高,可以简化思路 def factorial(num): if num == 1: return 1 return num*factorial(num-1) print(factorial(5)) # 使用递归实现菲薄数列 # fibo(1) = 0 # fibo(2) = 1 # fibo(3) = 1 # fibo(4) = 2 # fibo(5) = 3 # fibo(6) = 5 # fibo(7) = 8 。。。。。。。 #递归版 def fibo_1(n): if n == 1 or n == 2: return n - 1 return fibo_1(n-1) + fibo_1(n - 2) print(fibo_1(8)) #普通版 def fibo_2(n): before = 0 after = 1 if n == 1 or n == 2: return n - 1 for i in range(n - 2): Sum = after + before before = after after = Sum return Sum print(fibo_2(100))
内置函数举例了几个典型重点
#_author: "PXH" #date:2018/7/29 0029 print(all([1,2,3])) print(eval("1+2*3")) #简单过滤器 str = ["s","a","x","l"] def funl(s): if s != "a": return s data = filter(funl,str) print(list(data)) #map()用法差不多但是适用于相加要想过滤请用filter()这么用是为了把参数放到迭代器中节省资源 str = ["s","a","x","l"] def funl(s): return s+"avel" data = map(funl,str) print(list(data)) from functools import reduce def add(x,y): return x+y print(reduce(add,range(1,10))) #lambda a,b:a+b 匿名函数 #阶乘变形高大上版函数式编程 from functools import reduce print(reduce(lambda x,y:x*y,range(1,5+1)))
OK今天又过去了大家好好复习哦