一、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. 用大白话讲大数据HBase,老刘真的很用心(1)

    老刘今天复习HBase知识发现很多资料都没有把概念说清楚,有很多专业名词一笔带过没有解释.比如这个框架高性能.高可用,那什么是高性能高可用?怎么实现的高性能高可用?没说! 如果面试官听了你说的,会有什 ...

  2. 好端端的数据结构,为什么叫它SB树呢?

    大家好,今天给大家介绍一个很厉害的数据结构,它的名字就很厉害,叫SB树,业内大佬往往叫做傻叉树.这个真不是我框你们,而是它的英文缩写就叫SBT. SBT其实是英文Size balanced tree的 ...

  3. NameServer 与zk

    1.nameServer 之间互不通信,故不存在强一致性,即不同的producer看到的视图可能时不一样的,(如何保证最终一致的?) 2.nameServer维护的boker信息 发生变化时,不会像z ...

  4. 关于transition动画效果中,滚动条会闪一下就消失的问题

    具体问题说明: 我在通过transition来改变width的长度,在transition变化过程中,底下的滚动条会闪烁一下. 问题原理:因为是里面容器没办法完全被装下,并且容器的宽度被限制住了. 解 ...

  5. 怎么用Iometer测试存储性能

    1.Disk Targets选项栏中选择要测试的磁盘,1 per target of Outstanding I/Os 保持默认即可. 2.在Access Specifications栏中新建测试条件 ...

  6. 用PyCharm打个专业的招呼

    PyCharm 是什么 PyCharm(读作"拍恰姆")是 JetBrains 全家桶中的一员,专门用来写 Python 的: 官方网址是: https://www.jetbrai ...

  7. 01_Activity生命周期及传递数据

    1. Activity的生命周期: 2. Activity启动另一个Activity,并传递数据: package com.example.activitydemo; import android.a ...

  8. C语言中 EXIT_FAILURE和EXIT_SUCCESS

    1.C语言中 宏EXIT_FAILURE和EXIT_SUCCESS定义在头文件stdlib.h中,是一个符号常量,定义如下: #define EXIT_FAILURE 1 #define EXIT_S ...

  9. django和DRF的不同点

    django中封装了drf view 是 父类 class test1(View): def post(self,request): data=request.POST.get('name') ret ...

  10. Django链接mysql数据库报错1064

    D:\PycharmProjects\autotest>python manage.py makemigrations django.db.utils.ProgrammingError: (10 ...