Python中匿名函数与内置高阶函数详解
大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 。刚入门的读者千万不要错过!
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789
为了配合 Python办公自动化 系列文章,本文带来的是 偷学Python第二十四天: Python中匿名函数与内置高阶函数使用,其他内容将在近期更新完毕,本文目录如下
匿名函数
如果我们需要定义一个特别简单的函数,例如
def add(a, b):s = a + breturn s
这就出现问题了,这么优雅的Python怎么可以出现这种难看的代码呢,有没有办法可以将其简化为1行代码呢?这么优雅的Python肯定有办法将其简化的方法啊!这要用到匿名函数了。P ython中使用 lambda
关键字来创建匿名函数。
lambda [参数1 [,参数2,..参数n]]:表达式
示例代码
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/23
"""
news_add = lambda a, b: a + b
# 上面的那个等于
def news_add_old(a, b):return a + bx = news_add_old(5, 10)
y = news_add(5, 10) # 调用匿名函数
print(x, y) # 15 15
结合内置函数使用
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/23
"""list1 = [{"a": 10, "b": 20}, {"a": 20, "b": 20}, {"a": 50, "b": 20}, {"a": 6, "b": 20}, {"a": 9, "b": 20}]# 那个列表中的a最大
max_value = max(list1, key=lambda x: x["a"])
print(max_value)# 如果用普通的函数写就多了几行
def func(di):return di["a"]
max_value = max(list1, key=func) # 这里不能加()不然就表示调用了
print(max_value)
也可以将匿名函数当做参数
def func(a, b, fun):s = fun(a, b)return sz = func(5, 10, lambda a, b: a + b)
print(z) # 15
注:lambda可以省去定义函数的过程,让代码更加精简,而且不用考虑命名问题,但是在PEP8规范里面是不推荐用lambda这种方式的
内置函数
map( )
map()
会根据提供的函数对指定序列做映射,使用方法:
map(function, iterable, ...)
第一个参数 function
以参数序列中的每一个元素调用 function
函数, 第二个参 数 iterable
一个或多个序列。其 返回包含每次 function 函数返回值的新列表。
示例代码
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/23
"""
list1 = [1, 2, 4, 5, 56, 12, 5, 2, 34]# 生成一个函数
def func(lt): # 将偶数返回,奇数+1返回if lt % 2 == 0:return ltelse:return lt + 1list2 = map(func, list1) # 千万不能加()
# 使用lambda关键字
list3 = map(lambda i: i if i % 2 == 0 else i + 1, list1)
print(list(list3)) # [2, 2, 4, 6, 56, 12, 6, 2, 34]
print(list(list2)) # [2, 2, 4, 6, 56, 12, 6, 2, 34]
reduce( )
reduce() 函数在Python2.x的时候是系统内置的函数,到Python3.x就已经归入functools库里面了。
reduce() 函数会对参数序列中元素进行累 积。 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce(function, iterable[, initializer])
示例代码
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/23
"""
from functools import reducelist1 = [1, 2, 3, 4, 5, 6, 7]
value = reduce(lambda x, y: x + y, list1)
print(value) # 28 = 1+2+3+4+5+6+7
执行流程即 将计算结果存储到x,每次累计。initializer就是设置x的初始值,演示如下
filter( )
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该方法接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
filter(function, iterable)
sorted( )
sorted()
函数对所有可迭代的对象进行排序操作,返回的是一个新的 list.返回重新排序的列表。
sorted(iterable, cmp=None, key=None, reverse=False)
iterable – 可迭代对象。
cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
示例代码
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/23
"""
students = [{'name': 'tom', 'age': 20},{'name': 'lucy', 'age': 15},{'name': 'lily', 'age': 13},{'name': 'mark', 'age': 21},{'name': 'jack', 'age': 13},{'name': 'steven', 'age': 18},
]# 找出所有年龄大于18岁学生
result = filter(lambda x: x['age'] > 18, students)
print(list(result)) # [{'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}]# 按照年龄从小到大排序
students = sorted(students, key=lambda x: x['age'], reverse=True) # 利用keyprint(students)
'''
[{'name': 'mark', 'age': 21}, {'name': 'tom', 'age': 20},
{'name': 'steven', 'age': 18}, {'name': 'lucy', 'age': 15},
{'name': 'lily', 'age': 13}, {'name': 'jack', 'age': 13}]
'''
Python中匿名函数与内置高阶函数详解相关推荐
- python中的内置高阶函数
一. 内置高阶函数的类型 (一).内置高阶函数map """ map():接收两个参数,一个是函数 一个是序列 map将传入的函数依次作用到序列的每个元素,并且把结果作为 ...
- 一文看懂Python(八)-----内置高阶函数用法总结
函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...
- python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及
Python--函数式编程.高阶函数及内置函数 函数式编程 一.不可变数据:不用变量保存状态不修改变量 二.第一类对象:函数即"变量" 1.函数名可以当做参数传递 2.返回值可以是 ...
- python内置高阶函数_map()函数~~内置的高阶函数
''' map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, 并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如 ...
- python高阶函数filter_Python进阶系列连载(13)——Python内置高阶函数filter(上)...
前言 进阶部分连载继续~ 如果还没看过我的入门连载部分,先看: 当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~ 前文传送门: filter filter是什么意思呢? 我 ...
- 列举5个python内置函数_Python5个内建高阶函数的使用
描述 本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是: map reduce filter sorted/ ...
- python高阶函数心得体会_Python高阶函数使用总结
Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约2000字,建议阅读6分钟 审稿人:耿远昊,Datawhale成员,华东师范大学,开源教程<Joyful-P ...
- Python基础-----列表生成式、偏函数、高阶函数、闭包、装饰器
列表生成式 列表生成式(列表推导式):通俗理解使用for循环快速创建一个列表,最终要获取一个列表 下面这个我们经常使用比较麻烦的方法: my_list=[] for i in range(1,6):p ...
- Python函数式编程简介(一)高阶函数
本文概括介绍Python函数式编程的一些概念及用法,详细请参考: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...
最新文章
- springboot整合springSecurity使用
- 20165328 预备作业3 Linux安装及命令
- JAVA51报错,好象是占溢出错误,不知道怎么改
- Winform中怎样跨窗体获取另一窗体的控件对象
- faster rcnn流程
- Java面向对象编程(高级)
- 在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...
- 重磅 | 边缘计算核心技术辨析
- jsp中el表达式创建一个list
- Java_Spring MVC_Servlet
- 网易易盾升级内容安全体系 发布智能审核管理系统
- AdapterView与Adapter
- 解决:修改docker bip项重启后,docker0的ip仍不变
- PHP生成短连接的方法
- 剑灵最新服务器2017,NCsoft2017新游戏计划 剑灵天堂M多款手游
- 职业推手自曝微博炒作内幕 十万水军任你调遣!
- 【无线芯片解读】2.4G专题:Si24R1
- 【随笔】方波的表示、转换与应用
- excel学习-制作斜线表头
- WWDC21主题演讲6 月 8 日凌晨1点开幕
热门文章
- django-数据库的操作-原始版本-表格的查询
- linux-分区与硬盘-实战:添加新硬盘
- Cloud Toolkit 应用部署、文件上传支持上传进度实时展示
- 小程序点击事件改变样式(普通js鼠标点击事件)
- 基因疗法真的有效吗?治疗技术前景又如何?
- [20150805]提升scn4.txt
- 用移动智能设备访问Ossim系统
- 高老师架构设计思考短句集(1)
- MVC如何将用户控件(分部视图,RenderPartial,ViewUserControl)内容转换为字符串并输出...
- 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33