python中的高阶函数

1.匿名函数

 #  lambda表达式  #  匿名函数  #  没有名字的函数 相当于  #  优点:节省内存空间 优化代码  #  def add(a, b):  #  return a+b 
 def  add(a, b):  return  a + b  #  当函数里面的代码只有一行的时候可以这样写! 


 print (add(1, 2 ))  #  但函数里面的代码只有一行,可以转换为匿名函数.. 


 #  lambda 传入的参数: 返回的数据  #  (lambda a, b: a+b) 
( lambda  a, b: a + b)(1, 2)   #  只使用一次  调用匿名函数,在后面加括号和参数 
add1 = ( lambda  a, b: a + b)   #  定义名字,可重复使用 
 print (add1(1, 2 ))  print (add1(2, 6 ))  #  实践中一般只使用一次,不需要考虑函数的名字,只需要完成功能 

 

 

2.递归

 #  递归特点:  #  1.函数内部自己调用自己  #  2.必须要有出口 


 #  有规律的循环(线性循环)  #  打印 1 ~ 9 
 def  func(start, stop, step=1):   #  默认参数 
     print  (start)  if  start == stop:   #  结束 递归的出口 
         return    #  作用只是结束函数运行,停止递归  默认是None  空 
 func(start + step, stop, step)


func(
1, 9) # range(1, 10, 1)

 

 

 #  无规律循环(非线性循环) 
list_data = [1, [2, 3, [4, 5, 6, [7, 8, 9 , [0]]]]]  #  按照顺序打印1,2,3,4,5,6,7,8,9,0  #  如何判断i是否属于某个类型  #  isinstance(要判断的变量, 要判断的类型)  #  print(isinstance([1, 2], list))  # [1, 2]是list类型,返回True  #  print(isinstance([1, 2], str))  # [1, 2]不是str类型,返回False  #  for i in list_data:  #  if type(i) == list:  # 也可以这样  #  for j in i:  #  ...  # 一直嵌套  #  else:  #  print(i) 


 def  func(data):  #  if type(data) == list: 
     if  isinstance(data, list):  for  i  in  data:   #  是列表,则更深一层 
 func(i)  else  :  print (data)   #  不是列表,打印 
 func(list_data) 

 

 

 

3.高阶函数

# 高阶函数 函数里面调用另一个函数
 #  reduce 减 
 from  functools  import  reduce   #  from 从什么地方 import 导入什么东西 
 list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]  print (reduce( lambda  a, b: a + b, list1))  #  1+2=3,3+3=6,6+4=10... 
 list3 = [[1, 2], [3, 4], [5, 6 ]]  #  2+4+6=12 


 def  aa(a, b):  if  type(a) == list:  return  a[1] + b[1 ]  else  :  return  a + b[1 ]  print (reduce(aa, list3))   #  12 

 

 

 #  map 映射  #  map自带for循环  #  map(一个函数名, 一个数据) 
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]  print (map( lambda  i: str(i), list1))   #  生成器对象 
 print (list(map( lambda  i: str(i), list1)))   #  强转为list 


 def  int_to_list(data):  return  str(data)  print (list(map(int_to_list, list1)))   #  注意这里int_to_str只写了函数名,不是函数调用 

 

 

 

今日作业

 #  5!  #  5的阶乘 
 def  func(data):  #  print(data) 
     if  data == 1:   #  出口 
         return  1
     return  data*func(data-1 )  print (func(5))

 

标签: python

添加新评论