python入门16 递归函数 高阶函数

递归函数:函数内部调用自身。(要注意跳出条件,否则会死循环)

高阶函数:函数的参数包含函数

递归函数

#coding:utf-8
#/usr/bin/python
"""
2018-11-17
dinghanhua
递归函数 高阶函数
"""

‘‘‘递归函数,函数内部调用函数本身‘‘‘
‘‘‘n!‘‘‘
def f_mul(n):
    if type(n) != type(1) or n <= 0: #不是整数或小于0
        raise Exception(‘参数必须是正整数‘)
    elif n == 1:
        return 1
    else:
        return n * f_mul(n-1) #调用自身

print(f_mul(5))
‘‘‘‘回声函数‘‘‘
def echo(voice):
    if len(voice) <= 1:
        print(voice)
    else:
        print(voice,end = ‘\t‘)
        echo(voice[1:]) #调用自身

echo(‘你妈妈叫你回家吃饭‘)

高阶函数

‘‘‘函数式编程:函数的参数是函数。高阶函数‘‘‘

‘‘‘map() 2个参数:1个函数,1个序列。将函数作用于序列的每一项并返回list
map(f,[l1,l2,l3]) = [f(l1),f(l2),f(l3)]
‘‘‘
#列表每项首字母大写
print(list(map(lambda x: x.capitalize(),[‘jmeter‘,‘python‘,‘selenium‘])))

#并行遍历,序列合并
print(list(map(lambda x,y,z:(x,y,z),[1,2,3],[‘jmeter‘,‘python‘,‘selenium‘],[‘api‘,‘dev‘,‘ui‘])))
#等价于
print(list(zip([1,2,3],[‘jmeter‘,‘python‘,‘selenium‘],[‘api‘,‘dev‘,‘ui‘])))
#3个列表各项平方之和
print(list((map(lambda x,y,z:x**2+y**2+z**2,[1,2,3],[4,5,6],[7,8,9]))))
‘‘‘filter() 用函数筛选,函数需返回bool值。true保留,false丢弃
filter(f,[l1,l2,l3]) = [ if f(l1)==True: l1,...]
‘‘‘

#取出列表内的偶数
li = [1,334,32,77,97,44,3,8,43]
print(list(filter(lambda x:x%2==0,li)))

#取出列表中去除两边空格后的有效数据 x and x.strip()
li=[False,‘‘,‘abc‘,None,[],{},set(),‘  ‘,‘x‘,[1,2]]
print(list(filter(lambda x: x and str(x).strip(),li)))
‘‘‘自定义高阶函数‘‘‘
def add_square(x,y,f):
    return f(x)+f(y)

def square(x):
    return x**2

print(add_square(1,2,square))
#用匿名函数
print(add_square(1,2,lambda x:x**2))

the end!

原文地址:https://www.cnblogs.com/dinghanhua/p/9975142.html

时间: 2025-01-11 00:38:08

python入门16 递归函数 高阶函数的相关文章

python内置常用高阶函数(列出了5个常用的)

原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://blog.csdn.net/cv_you/article/details/70880405 python内置常用高阶函数: 一.函数式编程 •函数本身可以赋值给变量,赋值后变量为函数: •允许将函数本身作为参数传入另一个函数: •允许返回一个函数. 1.map()函数 是 Python 内置的高阶函数,

python函数式编程之高阶函数学习

基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用白变量的程序设计语言,由于函数内部的变量状态是不确定的,同样的输入可能有不同的输出,我们称这种函数为有副作用的. 函数式编程的一个特点就是,允许把函数本身作为参数传递给另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式

python 函数式编程:高阶函数,map/reduce

1 #函数式编程 2 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 3 #(一)高阶函数 4 5 f=abs 6 f 7 print(f(-20)) 8 #结果 20 9 #函数可以赋值给一个变量,即:变量可以指向函数 10 #那么函数名是什么?函数名其实就是指向函数的变量! 11 12 #下面的代码,执行后,abs已经不指向求绝对值函数而是一个整数10了. 13 #后面的abs(-10)将报错,无法执行,必须重启python才可以. 14 #abs=10

递归函数+高阶函数

函数: 1. 递归函数: 在函数内部,可以调用其他函数, 如果一个函数在内部调用自己本身,这个函数就是递归函数:  递归特性: 1. 必须要有一个明确的结束条件: 2. 每次进入更深一层次递归时,问题规模比上一次递归都应有所减少: 3. 递归效率不高,递归层次过多会导致栈溢出.最多支持999次   def calc(n):  if n > 1:   print(n)   return calc(n/2)  else:   return 1 calc(40)  输出: 40 20.0 10.0 5

python六十课——高阶函数之map

1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对象(字符串.列表.range...) 功能: 将fn函数作用于lsd1中的每一个元素上, 将每次执行的结果存入到一个map对象中返回: [注意]得到的这个map对象是一个迭代器对象 需求:lt = ['1','2','3','4','5'] --> [1,2,3,4,5] map(int,lt):执行过

二、Python开发---13、高阶函数与内置函数

常用高阶函数 #map list01 = [1,3,5,7,9] new_list01=map(lambda x:x*2,list01) print(list(new_list01)) #输出为[2, 6, 10, 14, 18] 将map对象转换为list list02 = [2,4,6,8,10] new_list02 = map(lambda x,y:x*y,list01,list02) print(new_list02) #<map object at 0x0000000001F0A51

scala入门-09 scala高阶函数

我们做spark开发 会使用很多spark的高阶函数 所以 今天我就在linux服务上使用scala高阶函数 声明一个List集合: List集合所在的包已经被预定义自动引入,所以此处就不需要在引入包了,这里直接使用List实例化对象,其实用List的object对象的apply方法 我们使用map函数把list中的每个值都乘以3: x表示l中每一个元素,map对l中的每一个元素进行遍历操作,由于List中只有一种类型的元素,所以我们在执行马屁操作的时候可以省略其类型,如下所示: List集合中

七. python进阶(内置高阶函数)

一. 内置高阶函数 高阶函数 函数接收的参是一个函数名 返回值包含函数 把函数当作一个参数传给另一个函数 def a(n): print(n) def b(name): print('my name is 哈哈哈') a(b('111111111111111111111111111111111')) # my name is 哈哈哈 # None def a(n): print(n) #<function b at 0x000002EAA7B43E18> def b(): print('my

python六十一课——高阶函数之reduce

2).reduce(fn,lsd): 参数一:fn --> 函数对象 参数二:lsd --> 序列对象 功能: 先将lsd中的第一和第二个元素去除传入到fn中参与运算, 运算后得到结果,再和第三个元素传入到fn中参与运算, 以此类推... [注意]: reduce函数属于functools模块中的函数,所以需要显示的先导入functools模块再使用 from functools import reduce from functools import reduce lt=[1,2,3,4] '