filter(function, iterable)

作用:用于过滤序列,过滤掉不符合条件的元素。

参数:接收两个参数,第一个为函数,第二个为序列。

  • function – 判断函数。
  • iterable – 可迭代对象。

原理:序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,保留返回 True 的元素。

返回值:Pyhton2.x 返回列表;Python3.x 返回迭代器对象,若要转换为列表,可以使用 list() 来转换。

  • Python2.x 中返回的是过滤后的列表;Python3.x 中返回到是一个 filter 类。
  • filter 类实现了__iter____next__方法, 可以看成是一个迭代器。
# 过滤函数
def func(n):return n % 2 == 1list_1 = [i for i in range(10)]result_1 = filter(func, list_1)
print(result_1)   # <filter object at 0x0000017A4FF67AF0> 返回一个迭代器对象
print([t for t in result_1])  # [1, 3, 5, 7, 9]result_2 = filter(lambda x: x % 3 == 1, list_1)
print(result_2.__next__())  # 使用 __next__ 和 next(),会分别迭代出迭代器对象 result_2 的一个元素
print(next(result_2))   # 这三个输出分别是:1,4,[7]
print([t for t in result_2])

map(function, iterable1, iterable2, …)

作用:将传入的函数依次作用到序列的每个元素,并把结果返回。

参数:接收两个参数,第一个为函数,第二个为序列。

  • function – 判断函数。
  • iterable – 可迭代对象。

返回值:Pyhton2.x 返回列表;Python3.x 返回迭代器对象。

注意报错:TypeError: ‘map’ object is not callable 一般出现的原因是迭代对象(str,abs等)或者函数(map)被修改,不再是原来的函数,导致出现不可迭代对象。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def fun(x, y):return x + yresult_1 = map(fun, [1, 2, 3], [1, 2, 3])
print(result_1)  # <map object at 0x000001A668BBB700>
print([t for t in result_1])    # [2, 4, 6]# 如果函数有多个参数, 但每个参数的序列元素数量不一样, 会根据最少元素的序列进行
result_2 = map(lambda x, y, z: x + y + z, [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5])
print(result_2.__next__())  # 3
print(list(result_2))   # [6, 9]

reduce(function, iterable[, initializer])

作用:对参数序列中元素进行累积。

参数:有初始参数,从初始参数开始作为第一个参数累积

  • function – 函数,有两个参数
  • iterable – 可迭代对象
  • initializer – 可选,初始参数

原理:函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

返回值:单一结果返回值

注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里。

# reduce 函数
from functools import reducelist_1 = [1, 2, 3]
result_1 = reduce(lambda a, b: a+b, list_1)
result_2 = reduce(lambda a, b: a+b, list_1, 100)
print(result_1)     # 6
print(result_2)     # 106

python教程:filter,map,reduce相关推荐

  1. Python基础(六)—函数式编程(内部函数、闭包、lambda、filter/map/reduce/sorce、偏函数)

    内部函数 Python中函数的作用域由def关键字界定,函数内的代码访问变量的方式是从其所在层级由内向外,若往外直至全局作用域都查找不到的话代码会抛异常. 主要看以下代码的差别~~ "&qu ...

  2. python3函数中lambda/filter/map/reduce的用法

    lambda/filter/map/reduce这几个函数面试中很肯定会用到,本篇主要介绍这几个函数的用法. 1.lambda 匿名函数,用法如下: # lambada 参数,参数,参数 : 返回的表 ...

  3. Python内建函数之——filter,map,reduce

    原文链接:http://blog.csdn.net/prince2270/article/details/4681299 在讲述filter,map和reduce之前,首先介绍一下匿名函数lambda ...

  4. filter,map,reduce,apply函数

    (1)lambda     lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数.类似于C语言中的宏,可以用在任何需要函数的地方. 基本语法如下: 函数名 = lambda ar ...

  5. Python高级特性: 函数编程 lambda, filter,map,reduce

    一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...

  6. [Python] 函数lambda(), filter(), map(), reduce()

    转载地址:http://blog.csdn.net/dbanote/article/details/8912250 1.lambda() lambda()是Python里的匿名函数,其语法如下: la ...

  7. Python内置函数filter, map, reduce

    filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当 ...

  8. Python学习之Part09.高阶函数filter(),map(),reduce(),sorted()

    1.高阶函数 一个函数作为参数传给另外一个函数: 一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归) # abs()用来求一个数的绝对值 # 将abs函数赋值,则f==abs f = a ...

  9. python 的几个内置函数(lambda ,zip, filter, map, reduce )用法

    1.lambda lambda其实就是一条语句,lambda(x):body.x是lambda函数的参数,参数可以有任意多个(包括可选参数);body是函数体,只能是一个表达式,并且直接返回该表达式的 ...

  10. Pythont特殊语法filter,map,reduce,apply

    (1)lambda     lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数.类似于C语言中的宏,可以用在任何需要函数的地方. 基本语法如下: 函数名 = lambda ar ...

最新文章

  1. HarmonyOS UI开发 TableLayout(表格布局) 的使用
  2. java动效_Android 界面漩涡扭曲动效实现
  3. centos7源代码安装mysql5.7_CentOS7源码编译安装MySQL5.7.11
  4. Java Web学习总结(34)——拦截器和过滤器的差异总结
  5. IOCP扩展方法AcceptEx, DisconnectEx, GetAcceptExSockaddr用法示例
  6. 为 Joomla 而生的 Kunena 论坛安装手册
  7. Office Tip(1) : Split the Screen
  8. Sorry sir!
  9. 斯蒂夫乔布斯传札记:第九波
  10. 电脑摄像头测试软件在线,AMCap 摄像头测试软件使用说明
  11. java线程状态切换图
  12. 第一章 如何学习单片机
  13. 【leetcode-贪心】加油站/柠檬水找零/分发糖果/跳跃游戏/分发饼干/种花问题/非递减数列
  14. 黑客突破防火墙常用的几种技术(转)
  15. vo、qo、bo在spring中的位置
  16. Python数据可视化:分析38个城市的居住自由指数
  17. Java 并发编程—— Exchanger 应用,java软件开发工程师面试题
  18. idea根据路径找控制器的插件(推荐)
  19. 卸载MySQL及彻底清理MySQL的卸载残留
  20. 烤仔星选·NFT实验室 | 展望2021:是否是NFT爆发元年?

热门文章

  1. 《React Native移动开发实战》一一3.4 完善商品列表——ListView组件
  2. 轨迹系列8——记某真实项目中轨迹展示查询效率优化方案一(初步设计)
  3. 我的javaweb学习之旅--html常用块级标签
  4. Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
  5. 对象的当前状态使该操作无效 说明: 执行当前 Web 请求期间,出现未处理的异常。...
  6. 老公,等儿子长大,我去天堂找你(推荐)
  7. linux内核__force,Linux内核学习:I2C_SLAVE_FORCE
  8. python调用接口实例化_python 类静态方法实例化另一个类对象的问题?
  9. php5.2通过saprfc扩展远程连接sap730成功案例
  10. 采购申请 RFC BAPI