map:接受两个参数(函数,Iterable),map将传入的函数依次作用于Iterable的每个元素,并且返回新的Iterable

def f(x):return x*x
r = map(f,[1,2,3,4])    #此时的r为惰性求值——可用next()和for...in取值
#通过list()返回全部
print(list(r))  #[1, 4, 9, 16]

reduce:接受两个参数(函数,序列),reduce把一个函数作用于序列上,返回的结果继续和序列的下一个元素做累积计算,其效果为:reduce(f,[x,y,z])=>f(f(x,y),z)

from functools import reduce
def add(x,y):return x+y
reduce(add,[1,3,5,7,9]) #25

filter:过滤序列。接受两个参数(函数,序列),filter把函数作用于序列上,根据返回值是否为True,决定是否放弃该元素

def is_odd(x):return x%2==1
list(filter(is_odd,[1,2,3,4,5,6,7,8,9]))    #filter惰性求值[1, 3, 5, 7, 9]

sorted:排序,可排序对象包括数字list、字符串list、dict等,可接受三个参数,后两个为可选

# sorted([],key=express,reverse=True) key:对每个元素的处理方法   reverse:是否反向排序
sorted([0,1,-2,-1,6,3,8],key=abs,reverse=True) #[8, 6, 3, -2, 1, -1, 0]

匿名函数 lambda:匿名函数关键字 :前的元素表示匿名函数的参数 匿名函数不用谢return表达式,返回值就是该表达式的值

m = list(map(lambda x: x*x,[1,2,3,4]))
print(m)    #[1, 4, 9, 16]from functools import reducedict1 = {'zhangsan': 90, 'lisi': 100, 'wangwu': 89, 'zhaoliu': 92}
result = sorted(dict1.items(), key=lambda x: x[1])
dict1 = dict(result)
print(dict1)# map 映射 [1,4,9,16,25]
map1 = map(lambda x: x + 2, [1, 2, 3, 4, 5])
print(map1)
print(list(map1))names = ['tom', 'jack', 'lily', 'lucy', 'lily']
map2 = map(lambda x: x.capitalize(), names)
print(tuple(map2))# filter()  filter(function or None, iterable) --> filter objectnumbers = [2, 4, 7, 9, 0, 12, 45, 78, 23]
filter1 = filter(None, numbers)
print(list(filter1))filter2 = filter(lambda x: x % 2 == 0, numbers)
print(list(filter2))list1 = ['hello', 30, '80', 50, 'hi100', '99', 'yes']filter3 = filter(lambda x: str(x).isdigit(), list1)
print(list(filter3))filter3 = filter(lambda x: isinstance(x, int) or x.isdigit(), list1)
print(list(filter3))students = [('tom', 21), ('lucy', 18), ('jack', 22), ('lily', 19), ('jerry', 24)]
filter4 = filter(lambda x: x[1] > 20, students)
print(list(filter4))# reduce()  reduce(function, sequence[, initial]) -> value  initial为初值
list2 = [1, 2, 3, 4]
result = reduce(lambda x, y: x + y, list2, 1)
print(result)def add(x, y):return x + y
from functools import reduce
print(reduce(add, [1, 2, 3, 4], 1))#
result = reduce(lambda x, y: x * y, range(1, 6))
print(result)map0 = map(lambda x, y: x + y, [1, 2, 3], [2, 2, 2])
print(list(map0))# a ,b,c = map(int,input('请输入').split(' '))def is_odd(x):return x%2==1
list(filter(is_odd,[1,2,3,4,5,6,7,8,9]))
print(filter(is_odd,[1,2,3,4,5,6,7,8,9]))

装饰器:代码运行期间动态增加功能

#在now函数运行前自动打印日志
import functools
def log(func):@functools.wraps(func)def wrpper(*args,**kw):print("call %s()" % func.__name__)return func(*args,**kw)return wrpper
# 调用装饰器
@log
def now():print("hello")now()   #call now() hello

偏函数:functools.partial 把函数的某些参数固定住,返回一个新的函数,使调用更简单

import functools
int2 = functools.partial(int,base=2)
print(int2("1000000"))  #64偏函数是functools.partial()函数,将原函数当做第一个参数传入,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数。
举个栗子:import functoolsdef index(n1, n2):return n1 + n2num_func = functools.partial(index, 666)  # 666传给了第二个参数n2print(num_func(1))  # 结果输出为667

Python把函数作为参数传入的高阶编程方法相关推荐

  1. Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速

    Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...

  2. Python笔记_第四篇_高阶编程_正则表达式_3.正则表达式深入

    1. re.split 正则的字符串切割 str1 = "Thomas is a good man" print(re.split(r" +",str1)) # ...

  3. Python笔记_第四篇_高阶编程_检测_2.对类进行单元检测

    1. 对类进行单元检测: 第一步:首先编写一个类: # 类名Person,person.pyclass Person(object):def __init__(self,name,age):self. ...

  4. 深入理解javascript函数进阶系列第一篇——高阶函数

    前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...

  5. python一个函数调用另一个函数_在Python中将函数作为另一个函数的参数传入并调用的方法...

    在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...

  6. python中可变参数args传入函数时储存的类型是_[转载]Python中函数的参数定义和可变参数*args与**args...

    Python中函数的参数定义和可变参数 *args与**args区别 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和** ...

  7. python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)

    文章目录 可迭代对象 迭代器 什么是迭代器 什么是生成器 生成器的作用 生成器的注意事项 总结: 高阶函数 什么是高阶函数? map()函数 filter()函数 reduce()函数 参考 可迭代对 ...

  8. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

  9. Python基础-----列表生成式、偏函数、高阶函数、闭包、装饰器

    列表生成式 列表生成式(列表推导式):通俗理解使用for循环快速创建一个列表,最终要获取一个列表 下面这个我们经常使用比较麻烦的方法: my_list=[] for i in range(1,6):p ...

最新文章

  1. [HNOI 2011]卡农
  2. java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园
  3. Video 对象方法 canPlayType()
  4. vue warning如何去掉_详解 vue 组件三大核心概念
  5. 第43课 最大公约数 动动脑 第2题《小学生C++趣味编程》
  6. PostgreSQL一些简单问题以及解决办法
  7. Linux系统中打开文件数量的查看方法
  8. 经典单片机课程设计题目大全【大学教授珍藏资料】
  9. 谷歌 kaptcha 图片验证码
  10. 自用笔记傻妞返利配置
  11. php中验证码显示不出,PHP验证码显示不出来
  12. 挂载阿里云盘到本地目录
  13. 聊聊RabbitMq动态监听这点事
  14. 软件测试丨工具在接口测试中发挥什么样的作用?
  15. error in ./node_modules/swagger-ui-react/swagger-ui.js
  16. 从零开始的单片机学习(四)
  17. 运算放大器单电源供电和双电源供电
  18. 由于和IBM合作“IBM软件人才联盟”的项目,在社区开一个“IBM人才论坛”
  19. 2017年如何实现1个亿的小目标?
  20. mysql数据库集群方案

热门文章

  1. Java与C#个人之比较
  2. 大学生活应该这样度过之参加一个社团让自己溶入团队——《程序员羊皮卷》连载(11)
  3. maven 之 setting.xm 的配置详解、说明
  4. 解决: Client does not support authentication protocol requested by server; consider upgrading MySQL
  5. .SpelEvaluationException: EL1008E: Property or field ‘cache_department_list_Tree‘ cannot be found
  6. HTTP 协议是无状态协议,怎么理解
  7. axios中出现两次请求,OPTIONS请求和GET请求
  8. 获取BGR颜色的HSV值
  9. 手把手JDK环境变量配置
  10. Postgres中tuple的组装与插入