python基础--递归,高阶函数介绍(九)

    xiaoxiao2022-07-14  162

    # 递归,简单来说就是自己引用自己,在函数中就是自己调用自己 # 求10的阶乘 def fn(num): for x in range(1,num): num *= x return num print(fn(10)) # 递归是解决问题的一种方式,类似于循环 # 递归函数的两个要件 # 基线条件:问题可以被分解为最小的问题,当满足基线条件时,递归就不在执行了 # 递归条件:将问题继续分解的条件 def factorial(n): if n == 1: return 1 else : return n * factorial(n-1) print(factorial(8)) # 求任意一个数的n次幂 def power(n,i): if i == 1: return n else: return n * power(n , i-1) print(power(8,6)) # 检查一个字符串是否是回文 # abcddbca def huiwen(s): if len(s) < 2: return True elif s[0] != s[-1]: return False else : return huiwen(s[1:-1]) print(huiwen('abcddcba')) # 高阶函数:接受函数作为参数。 l = [1,2,3,4,5,6,7,8,9] # 定义一个函数,将制定列表中的所有偶数保存到新列表返回 def fn1(func,lst): new_list = [] for x in lst: # if x % 2 == 0: if func(x): new_list.append(x) return new_list def fn2(n): if n % 2 != 0: return True return False def fn3(n): if n > 4: return True return False print(fn1(fn3,l)) # filter(),可以从序列中过滤出符合条件的元素保存到新的序列中 # 参数: # 函数,根据该函数过滤序列 # 需要过滤的序列 # 返回值: # 过滤后的新序列 print(list(filter(fn2,l))) # 匿名函数lambda表达式,一般作为参数使用 # 专门用来创建一些简单的函数, fn4 = lambda a,b : a + b print(fn4(10,12)) res = filter(lambda i : i > 5 ,l) print(list(res)) # map() 函数可以对可迭代对象中所有元素做指定操作,并添加到新对象中返回。 res = map(lambda i : i ** 2, l) print(list(res)) # sort() 用来对列表中的元素进行排序,默认是直接比较列表中元素大小 # 该函数可以接收一个关键字参数,key, # key需要一个函数作为参数,当设置了函数作为参数,每次都会以列表中的一个元素作为参数来调用函数,并且使用函数的返回值来比较元素大小 l = ['aaa','ffas','ffqwe','fgf','jack','mark'] l.sort() print(l) # sorted() 该函数和sort()函数用法基本一致,但是sorted()可以对任意的序列进行排序 # 并且使用该函数不会对原来的对象产生影响,会返回一个新的对象 l = ['1',9,'2',3,'7',4,'5',5] l = '12896425' print(sorted(l,key=int)) # 将函数作为返回值的函数。 # 这种函数也称为闭包,通过闭包可以创建一些只有当前函数能访问的变量。 # 可以将私有的数据放在闭包中。 def fn(): a = 10 def inner(): print('inn') return inner fn()() # 闭包的要件 # 函数嵌套 # 将内部函数作为返回值返回 # 内部函数必须要使用外部函数的变量 def make_averager(): nums = [] def averager(n): nums.append(n) return sum(nums) / len(nums) return averager averager = make_averager() print(averager(10)) print(averager(20)) print(averager(30))

     

    最新回复(0)