大家好,从今天起早起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中匿名函数与内置高阶函数详解相关推荐

  1. python中的内置高阶函数

    一. 内置高阶函数的类型 (一).内置高阶函数map """ map():接收两个参数,一个是函数 一个是序列 map将传入的函数依次作用到序列的每个元素,并且把结果作为 ...

  2. 一文看懂Python(八)-----内置高阶函数用法总结

    函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...

  3. python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及

    Python--函数式编程.高阶函数及内置函数 函数式编程 一.不可变数据:不用变量保存状态不修改变量 二.第一类对象:函数即"变量" 1.函数名可以当做参数传递 2.返回值可以是 ...

  4. python内置高阶函数_map()函数~~内置的高阶函数

    ''' map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, 并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如 ...

  5. python高阶函数filter_Python进阶系列连载(13)——Python内置高阶函数filter(上)...

    前言 进阶部分连载继续~ 如果还没看过我的入门连载部分,先看: 当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~ 前文传送门: filter filter是什么意思呢? 我 ...

  6. 列举5个python内置函数_Python5个内建高阶函数的使用

    描述 本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是: map reduce filter sorted/ ...

  7. python高阶函数心得体会_Python高阶函数使用总结

    Datawhale干货   作者:皮钱超,厦门大学,Datawhale原创作者 本文约2000字,建议阅读6分钟 审稿人:耿远昊,Datawhale成员,华东师范大学,开源教程<Joyful-P ...

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

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

  9. Python函数式编程简介(一)高阶函数

    本文概括介绍Python函数式编程的一些概念及用法,详细请参考: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...

最新文章

  1. springboot整合springSecurity使用
  2. 20165328 预备作业3 Linux安装及命令
  3. JAVA51报错,好象是占溢出错误,不知道怎么改
  4. Winform中怎样跨窗体获取另一窗体的控件对象
  5. faster rcnn流程
  6. Java面向对象编程(高级)
  7. 在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...
  8. 重磅 | 边缘计算核心技术辨析
  9. jsp中el表达式创建一个list
  10. Java_Spring MVC_Servlet
  11. 网易易盾升级内容安全体系 发布智能审核管理系统
  12. AdapterView与Adapter
  13. 解决:修改docker bip项重启后,docker0的ip仍不变
  14. PHP生成短连接的方法
  15. 剑灵最新服务器2017,NCsoft2017新游戏计划 剑灵天堂M多款手游
  16. 职业推手自曝微博炒作内幕 十万水军任你调遣!
  17. 【无线芯片解读】2.4G专题:Si24R1
  18. 【随笔】方波的表示、转换与应用
  19. excel学习-制作斜线表头
  20. WWDC21主题演讲6 月 8 日凌晨1点开幕

热门文章

  1. django-数据库的操作-原始版本-表格的查询
  2. linux-分区与硬盘-实战:添加新硬盘
  3. Cloud Toolkit 应用部署、文件上传支持上传进度实时展示
  4. 小程序点击事件改变样式(普通js鼠标点击事件)
  5. 基因疗法真的有效吗?治疗技术前景又如何?
  6. [20150805]提升scn4.txt
  7. 用移动智能设备访问Ossim系统
  8. 高老师架构设计思考短句集(1)
  9. MVC如何将用户控件(分部视图,RenderPartial,ViewUserControl)内容转换为字符串并输出...
  10. 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33