一、filter(function, iterable) - 过滤(“海选”)

# 判断落在第一象限的点[(x1, y1), (x2, y2)...]
points = [(-1, 2), (2, 3), (-1, -2), (2, -2), (1, 2)] # 方法一:
# 验证函数:若在第一象限,则返回True
def func(p):
return (p[0] > 0) and (p[1] > 0)
# 返回所有第一象限的点
sel_points = filter(func, points)
print('第一象限的点:', list(sel_points))
第一象限的点: [(2, 3), (1, 2)]
# 方法二:
# 采用lambda函数,返回所有第一象限的点
sel_points = filter(lambda p: (p[0] > 0) and (p[1] > 0), points)
print('第一象限的点:', list(sel_points))
第一象限的点: [(2, 3), (1, 2)]
# filter(function, iterable)的特殊用法:
x = [1, 2, 3, False, None, 0, '', (), [], {}]
# 若function为None,则默认作为身份函数,
# 会剔除掉iterable中所有为“假”的元素。
# python中的“假”包括:
# - False
# - None
# - 0
# - ’’,即空字符串
# - (),即空元组
# - [],即空列表
# - {},即空字典
sel_x = filter(None, x)
print(list(sel_x))
[1, 2, 3]

二、map(function, iterable, …) - 映射(“包装”)

# 根据半径求圆的面积
rlist = [1, 2, 3, 4, 5] # 采用lambda函数,传入一个iterable
slist = map(lambda r: 3.14 * r ** 2 , rlist)
print('圆的面积为:', list(slist))
圆的面积为: [3.14, 12.56, 28.26, 50.24, 78.5]
# 根据w、h求矩形的面积
wlist = [1, 2, 3, 4, 5]
hlist = [2, 3, 4, 5, 6] # 采用lambda函数,传入两个iterable
slist = map(lambda w, h: w * h, wlist, hlist)
print('矩形的面积为:', list(slist))
矩形的面积为: [2, 6, 12, 20, 30]

总结:filter与map两个高阶函数,好比选秀节目,前者类似“海选”,后者类似新人推出前的“包装”。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

海选与包装,Python中常用的两个高阶函数(讲义)的更多相关文章

  1. JS中几种常见的高阶函数

    高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...

  2. Python复习笔记(四)高阶函数/返回函数/匿名函数/偏函数/装饰器

    一.map/reduce map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次 作用到序列的每个元素,并把结果作为新的Iterator返回. reduce r ...

  3. python之路(4)高阶函数和python内置函数

    前言 函数式编程不用变量保存状态,不改变变量 内置函数 高阶函数 把函数当作参数传给另一个对象 返回值中包含函数 使用的场景演示: num_test = [1,2,10,5,8,7] 客户说 :对上述 ...

  4. Python进阶内容(一)--- 高阶函数 High order function

    0. 问题 # 本文将围绕这段代码进行Python中高阶函数相关内容的讲解 # 文中所有代码的兼容性要求为:Python 3.6,IPython 6.1.0 def addspam(fn): def ...

  5. python中的两个高阶函数map()和reduce()

    1.map()传入的有两个参数,函数和可迭代对象(Itreable),map()是把传入的函数依次作用于序列的每个元素,结果返回的是一个新的可迭代对象(Iterable). map()代码如下: # ...

  6. Python 简明教程 --- 16,Python 高阶函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...

  7. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  8. python基础之常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  9. 12、python中的函数(高阶函数)

    一.高阶函数 函数实际上也是一个对象,所以也能由变量指向一个函数对象,实际上函数名就是一个变量名.那么函数是传入变量作为参数的,如果传入的变量指向的是函数对象,这种函数就叫高阶函数. 高阶函数就是传入 ...

随机推荐

  1. 对JVM的一个基础了解

    1.JVM范围 2.JVM和class文件 (1).JVM和Java语言无关,JVM是一种规范,任何语言只要能编译成class文件格式都能在JVM上运行 3.class文件格式 (1).class文件 ...

  2. 为什么90%的大学都要求计算机专业学习C语言?

    编程语言是编程的工具,计算机相关专业的学生必须具备足够的编程能力.当然,关于"最好语言"的争论从来没有休止过,这里要强调一下:语言的选择真的没那么重要,学习语言的过程最重要是语言的 ...

  3. 【mq读书笔记】消息过滤机制

    mq支持表达式过滤和类过滤两种模式,其中表达式又分为TAG和SQL92.类过滤模式允许提交一个过滤类到FilterServer,消息消费者从FilterServer拉取消息,消息经过FilterSer ...

  4. 软件工程与UML第一次作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/f ...

  5. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...

  6. day7(redis的pipline使用)

    1.pipeline原理 redis基本语法:https://www.cnblogs.com/xiaonq/p/7919111.html redis四篇:https://www.cnblogs.com ...

  7. moviepy音视频剪辑:使用fl_time进行诸如快播、慢播、倒序播放等时间特效处理的原理和可能遇到的坑

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  8. Elements-of-Python_03_LanguageFeature

    (内容包括Python语法概述,流程控制,条件表达式) 1 Python语法 1.1 Python的特点 Python是一种完全面向对象的.解释性的.可移植的.开源的脚本编程高级语言,具有丰富的库,允 ...

  9. pycharm 本地代码同步到github上

    第一步, pycharm中setting-> Version Control -> Github -> addacount 如果账号密码登录不成功,就用token登录,参考下面这个博 ...

  10. 20192313 实验一《Linux基础与Java开发环境》实验报告

    20192313 2020-10-8 <数据结构与面向对象程序设计>实验1报告 课程:<程序设计与数据结构> 班级: 1923 姓名: 陈宇帆 学号:20192313 实验教师 ...